Aktivitäten-Berechnung
Einleitung
Mit der Aktivitäten-Berechnung lassen sich Feldwerte einer Aktivität automatisch berechnen und setzen – etwa beim Anlegen einer neuen Aktivität oder bei der Änderung eines Feldinhalts. Die Berechnung erfolgt über einen externen Dienst, der die Aktivitätsdaten erhält und geänderte Werte zurückliefert.
Beispiele
- Beim Anlegen einer neuen Aktivität vom Typ „Besuch" soll die Bezeichnung automatisch mit dem heutigen Datum befüllt werden.
- Ändert ein Benutzer das benutzerdefinierte Feld „Priorität" einer Aktivität, soll ein externes System eine neue Fälligkeitsdatum-Berechnung durchführen und das Ergebnis in das Feld „Fällig am" schreiben.
Wählen Sie bitte den Aktionstyp „Aktivitäten-Berechnung" aus.
Administration
Technische Angaben
Im Bereich Technische Angaben kann der Administrator die Aktivitätstypen auswählen, für die diese Aktion gelten soll. Dabei stehen alle im System angelegten Aktivitätstypen zur Verfügung – auch inaktive.
Auslöser
Im Bereich Ausführung bei kann konfiguriert werden, wann die Aktion ausgeführt wird:
- Neuanlage (TriggeredBy = „creation"): Die Aktion wird ausgeführt, wenn eine neue Aktivität eines der konfigurierten Typen angelegt wird.
- Änderung Feldinhalt (TriggeredBy = „fieldChange"): Die Aktion wird ausgeführt, wenn der Inhalt eines bestimmten Feldes geändert wird. Als Auswahlmöglichkeit stehen alle Felder (eigene und Standardfelder) der unter „Technische Angaben" hinterlegten Aktivitätstypen zur Verfügung. Die Einträge werden im Format „{Aktivitätstyp}.{Feldname}" angezeigt (jeweils in der Oberflächensprache des Administrators).
Gültig für
Im Bereich Gültig für steht zusätzlich der Toggle Systemprozesse zur Verfügung. Ist dieser aktiviert, kann die Aktion auch ohne direkte Benutzeraktion automatisch von Salesware in Hintergrundprozessen ausgeführt werden. Die Einstellung „Gültig für Business-Login-Gruppen" steht für diesen Aktionstyp nicht zur Verfügung.
Eingabeparameter
Neben den allgemeinen werden zusätzlich diese Parameter übergeben:
| Key | Datentyp | Value |
|---|---|---|
| Id | long | die Id der Aktivität |
| Type | string | der technische Schlüssel des Aktivitätstyps |
| Title | string | die Bezeichnung der Aktivität |
| Description | string | die Beschreibung der Aktivität |
| ParentId | long | die Id der übergeordneten Aktivität |
| ParentType | string | der technische Schlüssel des Typs der übergeordneten Aktivität |
| ParentTitle | string | die Bezeichnung der übergeordneten Aktivität |
| Private | bool | Kennzeichen, ob die Aktivität als privat markiert ist |
| CreationDate | DateTimeOffset | das Erstellungsdatum der Aktivität |
| Creator | long | die Id des Erstellers der Aktivität |
| ModificationDate | DateTimeOffset | das Datum der letzten Änderung der Aktivität |
| Participants | string[] | ein Array der Ids aller Teilnehmer der Aktivität; Benutzer im Format "a:{userId}" (z.B. "a:204"), Kollaborationsgruppen im Format "g:{groupId}" (z.B. "g:5") |
| Fields | Dictionary<string, object> | alle konfigurierten Felder der Aktivität als Schlüssel-Wert-Paare (siehe Aufbau des Fields-Dictionary) |
Aufbau des Fields-Dictionary
Der Key eines Eintrags entspricht dem technischen Schlüssel des Feldes, der in der Administration unter Basiskonfiguration / Aktivitäten / Felder nachgeschlagen werden kann:
- Systemfelder tragen das Präfix
system., z.B."system.status","system.dueDate","system.atmosphere". - Benutzerdefinierte Felder verwenden einen generierten Wert, z.B.
"49306b48".
Abhängig vom Feldtyp gilt folgender Datentyp für den Wert im Dictionary:
| Feldtyp | C#-Datentyp | Beschreibung / Besonderheit |
|---|---|---|
| Texteingabe | string? |
|
| Textfeld | string? |
|
| Checkbox | bool? |
|
| Fälligkeitsdatum | string? |
ISO-8601-Datum ohne Uhrzeit, Format: "YYYY-MM-DD", z.B. "2026-04-07" |
| Datum (mit Uhrzeit) | DateTimeOffset? |
ISO-8601-Datum mit Zeitzone, z.B. "2026-04-07T13:02:46.4289946+02:00" |
| Datum (ohne Uhrzeit) | string? |
ISO-8601-Datum ohne Uhrzeit, Format: "YYYY-MM-DD", z.B. "2026-04-07" |
| Benutzer | string? |
Format: "a:{userId}" für Benutzer (z.B. "a:204"), "g:{groupId}" für Kollaborationsgruppen (z.B. "g:5") |
| Zahlenwert | decimal? |
|
| Bewertung | int? |
|
| Checkliste | ChecklistElement[]? |
Array von Objekten (siehe ChecklistElement) |
| Dropdown-Auswahl | string? |
Technischer Schlüssel des ausgewählten Optionslistenwertes |
| Status | string? |
Technischer Schlüssel des Statuswertes (z.B. "system.new", "system.inProgress", "system.closed") |
| Entitätsverknüpfung | string? |
Schlüssel des verknüpften Datensatzes; bei Feldern auf der Entität Kontakt wird die ERP-verwendbare Id übergeben (z.B. die Kundennummer "1866990") – nicht die interne Salesware-Id. Für Kontaktfelder mit konfigurierter Ansprechpartner-Auswahl sind zusätzlich weitere Einträge im Dictionary vorhanden (siehe Entitätsverknüpfung Kontakt) |
| Währungsbetrag | decimal? |
|
| Wiederholung | IterationDefinition? |
Komplexes Objekt (siehe IterationDefinition) |
ChecklistElement
Ein Checklisten-Wert ist ein Array von Objekten mit folgenden Eigenschaften:
| Eigenschaft | Datentyp | Beschreibung |
|---|---|---|
Key |
string |
Eindeutiger technischer Schlüssel des Eintrags |
Label |
string |
Anzeigetext des Eintrags |
Checked |
bool |
Kennzeichen, ob der Eintrag abgehakt ist |
Beispiel:
[
{ "Key": "a1b2c3d4", "Label": "Angebot versenden", "Checked": true },
{ "Key": "e5f6a7b8", "Label": "Rückruf vereinbaren", "Checked": false }
]
IterationDefinition
Eine Wiederholungs-Definition ist ein Objekt mit folgenden Eigenschaften:
| Eigenschaft | Datentyp | Beschreibung |
|---|---|---|
Interval |
string? |
Art der Wiederholung (technischer Schlüssel, s.u.) |
RepetitionAll |
int? |
Intervallgröße bei benutzerdefinierter Wiederholung (z.B. 2 für „alle 2 Wochen") |
RepetitionUnit |
string? |
Einheit bei benutzerdefinierter Wiederholung (technischer Schlüssel, s.u.) |
DynamicTimeRange |
bool? |
Kennzeichen, ob ein dynamischer Zeitraum verwendet wird |
DayOfMonth |
int? |
Tag des Monats (1–31) |
DynamicInterval |
string? |
Position des Wochentags im Monat (technischer Schlüssel, s.u.) |
DayOfWeek |
int? |
Wochentag (0 = Sonntag, 1 = Montag, … 6 = Samstag) |
Month |
short? |
Monat (1–12) |
Mögliche Werte für Interval:
| Wert | Bedeutung |
|---|---|
"none" |
Keine Wiederholung |
"daily" |
Täglich |
"weekdays" |
Werktags |
"weekly" |
Wöchentlich |
"monthly" |
Monatlich |
"yearly" |
Jährlich |
"userDefined" |
Benutzerdefiniert (Intervall via RepetitionAll + RepetitionUnit) |
Mögliche Werte für RepetitionUnit (nur bei Interval = "userDefined"):
| Wert | Bedeutung |
|---|---|
"day" |
Tag |
"week" |
Woche |
"month" |
Monat |
"year" |
Jahr |
Mögliche Werte für DynamicInterval:
| Wert | Bedeutung |
|---|---|
"first" |
Erster |
"second" |
Zweiter |
"third" |
Dritter |
"fourth" |
Vierter |
"last" |
Letzter |
Vererbung
Felder, bei denen die Vererbung vom Administrator aktiviert wurde, besitzen im
Fields-Dictionary einen zusätzlichen Bool-Eintrag mit dem Suffix_isInherited(z.B."system.contact_isInherited": false). Dieser gibt an, ob der Feldwert von einer übergeordneten Aktivität geerbt wurde. Der Eintrag ist schreibgeschützt und wird in der Rückgabe ignoriert.
Entitätsverknüpfung Kontakt
Kontaktfelder, bei denen zusätzlich ein Ansprechpartner ausgewählt werden kann (z.B. system.contact), liefern neben dem Haupteintrag vier weitere Einträge im Fields-Dictionary:
| Key | Datentyp | Beschreibung |
|---|---|---|
{fieldKey} |
string? |
ERP-verwendbare Id des verknüpften Kontakts (z.B. "1866990") |
{fieldKey}_isInherited |
bool |
Kennzeichen, ob der Kontaktwert von einer übergeordneten Aktivität geerbt wurde |
{fieldKey}.addition |
string? |
Schlüssel des verknüpften Ansprechpartners |
{fieldKey}.addition_isInherited |
bool |
Kennzeichen, ob der Ansprechpartner von einer übergeordneten Aktivität geerbt wurde |
{fieldKey}.additionReference |
string? |
Referenz-Id des Ansprechpartners (z.B. "867032") |
Beispiel für das Systemfeld system.contact:
{
"system.contact": "1866990",
"system.contact_isInherited": false,
"system.contact.addition": null,
"system.contact.addition_isInherited": false,
"system.contact.additionReference": "867032"
}
Ausgabeparameter
Neben den allgemeinen Rückmeldungen können folgende Parameter zurückgegeben werden:
| Key | Datentyp | Value |
|---|---|---|
| Title | string | die neue Bezeichnung der Aktivität |
| Description | string | die neue Beschreibung der Aktivität |
| Fields | Dictionary<string, object> | die zu ändernden Felder als Schlüssel-Wert-Paare (gleicher Aufbau wie Eingabe-Fields) |
Hinweis
Von den Standardfeldern einer Aktivität sind nur Bezeichnung (
Title) und Beschreibung (Description) über die Rückgabe änderbar. Weitere Standardfelder in der Rückgabe werden stillschweigend ignoriert.
Verhalten bei der Auswertung der Rückgabe
- Felder nicht in der Rückgabe: Ist ein Feld nicht in der Rückgabe enthalten, bleibt sein Wert in der Aktivität unverändert.
- Inkompatible oder nicht konfigurierte Felder: Kann ein zurückgegebener Wert nicht übernommen werden (Feld im Aktivitätstyp nicht konfiguriert oder Datentyp inkompatibel), bleibt der Wert erhalten und es wird eine Meldung in die Ereignisanzeige der Administration geschrieben.
- Änderungsprotokoll: Jede durch die Aktion bewirkte Feldänderung wird im Aktivitätenprotokoll festgehalten. Anstelle des auslösenden Benutzers wird dabei der Aktionsname verwendet:
Aktion „{Aktionsname}" hat den Inhalt des Feldes „{Feldname}" auf „{Wert}" geändert.
- Änderungsdatum: Eine durch die Aktion bewirkte Feldänderung aktualisiert das Änderungsdatum der Aktivität.
- Hintergrundprozesse: Wird die Aktion aus einem Hintergrundprozess heraus ausgeführt, werden Rückgaben zur Benutzerinteraktion (Lightboxen, Prompts) ignoriert.