Inhalt
Stella CRM
Überblick#
Diese Dokumentation beschreibt kurz die Vorgehensweisen für die Einrichtung bestimmter Funktionen im CRM. Die Funktionen hängen dabei von bestimmten Daten (Dokumenten) im CRM ab, welche es zu konfigurieren gilt.
Alles, was diesbezüglich als Minimum zu konfigurieren ist, befindet sich in der CRM-Oberfläche im Bereich Admin.
ACL und Sicherheit
ACL-Rollen#
Grundsätzliches#
Alle Rollen, welche für Hide-When in Layouts und Actions verwendet werden, befinden sich vollständig in der Adress-Datenbank. Rollen, welche für Leser- und Autorenfelder verwendet werden, befinden sich in der Datenbank, in der die jeweiligen Dokumente liegen.
Rollen-Berechtigungen#
[Admin]#
- Gruppen: StellaCrm-Admins
- Layout: Email
- CRM Dokument Workflow abbrechen und Mail senden
- Sofort Senden einer gespeicherten Mail
- Erneut senden (wenn nicht der ursprüngliche Absender)
- Menü: Global
- Sieht das globale Menü: Admin
[Approver]#
- Gruppen: StellaCrm-AddressenGenehmiger
- Layout: Company
- Darf neue Company freigeben
- Layout: Contact
- Darf neuen Kontakt bei neuer Company freigeben
[CommercialDep]#
- Gruppen: StellaCrm-Abteilung_Kaufmann
- Layout: Auftrag
- Darf das Feld „Auftragsnummer“ anpassen
[Management]#
- Gruppen: StellaCrm-Geschaeftsfuehrung
- Layout: Operation
- Darf Einsatz bearbeiten
- Layout: Zeitbuchung
- Darf Start und Endezeit von Zeitbuchungen anpassen (in Review)
[OrderEditor]#
- Gruppen: StellaCrm-Abteilung_Einkauf
- Layout: MaterialItem
- Darf die Felder
- Beschädigte Lieferung
- Liefermenge
- Erwartetes Lieferdatum
- Bestellmenge
- Ablageort
- anpassen
- Darf die Felder im Panel „Kommentar zu Beschädigung“ anpassen
- Darf die Felder im Panel „Referenzen“ anpassen
[PayrollDep]#
- Gruppen: StellaCrm-Abteilung_Personal
- Menü: Global
- Sieht das Menü: Zeiten - Export
- Layout: Zeitbuchung
- Darf Start und Endezeit von Zeitbuchungen anpassen (in Review)
[ProjectMgr]#
- Gruppen: StellaCrm-Projektmanager
- Layout: Operation
- Darf Einsatz bearbeiten
- Layout: Task
- Darf Task speichern
- Layout: Zeitbuchung
- Darf Feld „Eingabe in Minuten“ anpassen
[ReadProtectChng]#
- Gruppen: StellaCrm-LeseschutzAendern
- Layout: Brief, Mail
- Darf den Leseschutz in Dokumenten ändern
[ReadProtect]#
- Gruppen: StellaCrm-LeseschutzSetzen
- Layout: Brief, Mail
- Darf den Leseschutz in Dokumenten setzen
[ServiceManager]#
- Gruppen: StellaCrm-Servicemanager
- Layout: Wartungspaket
- Darf den finalen Wartungsbericht erstellen
- Darf Wartungspaket abschließen
- Layout: Serviceaufgabe
- Darf Serviceaufgabe freigeben (Button „Release“)
[SubmitOrders]#
- Gruppen: StellaCrm-Servicemanager
- Layout: Wartungspaket
- Darf Bestellungen einreichen
Erstell- und Bearbeitungsrechte für CRM-Objekte#
| Erstellen | Bearbeiten (Bearbeiter dürfen auch Lesen) |
Lesen | Löschen (dürfen auch Lesen) |
|
|---|---|---|---|---|
| Abwesenheit | Jeder | Ersteller Abteilung-Personal |
Niemand | |
| Adressen (Firma, Liegenschaft, Kontakt, Kontaktkennzeichen) |
Jeder Wenn Freigabe Workflow aktiviert, dann bedarf es einer Freigabe durch: Addressen-Genehmiger vor der allgemeinen Sichtbarkeit, |
Jeder | Jeder | Addressen-Genehmiger CRM-Administratoren |
| Aktivität | Jeder | Ersteller / Bearbeiter der Aktivität | Ersteller der Aktivität | Ersteller der Aktivität CRM-Administratoren |
| Änderungsauftrag | CRM-Administratoren | CRM-Administratoren | CRM-Administratoren | CRM-Administratoren |
| Anlage | Jeder | Jeder | Jeder | Servicemanager |
| Auftrag / Projekt | Geschäftsführung Projektmanager Abteilung-Kaufmann |
Geschäftsführung Projektmanager Abteilung-Kaufmann |
Jeder | Geschäftsführung Projektmanager Abteilung-Kaufmann |
| Bestellung | Jeder | Abhängig vom Workflow: Abteilung-Einkauf (immer) Jeder (solange Workflow nicht gestartet) |
Jeder | CRM-Administratoren |
| Bestellung im Wartungspaket | Servicemanager | Abhängig vom Workflow: Abteilung-Einkauf (immer) Servicemanager (solange Workflow nicht gestartet) |
Jeder | CRM-Administratoren |
| Bestell-Material | Jeder | Abhängig vom Workflow: Abteilung-Einkauf (immer) Jeder (solange Workflow nicht gestartet) |
Jeder | CRM-Administratoren |
| Dokumente (Mail, Brief, Vermerk) |
Jeder | Wenn Dokument im Workflow: der jeweilige Bearbeiter im Workflow Wenn Dokument nicht im Workflow: Jeder |
Jeder Ausnahme: Leseschutz ist aktiviert |
CRM-Administratoren |
| Dokument Kategorie | CRM-Administratoren | CRM-Administratoren | Jeder | CRM-Administratoren |
| Einsatz | Projektmanager Servicemanager |
Projektmanager Servicemanager Geschäftsführung Geplanter TechnikerIn (Einschränkung: solange es nicht abgeschlossen ist) |
Abteilung-Kaufmann Abteilung-Personal |
Projektmanager Servicemanager Geschäftsführung |
| Gerät | Jeder | Jeder | Jeder | Servicemanager |
| Handbücher | Jeder | Jeder | Jeder | Servicemanager CRM-Administratoren |
| Material | Jeder | Jeder | Jeder | Jeder |
| Projekttask | Geschäftsführung Projektmanager Abteilung-Kaufmann |
Geschäftsführung Projektmanager Abteilung-Kaufmann |
Jeder | Geschäftsführung Projektmanager Abteilung-Kaufmann |
| Projekt-Vorlage | Projektmanager | Projektmanager | Jeder | Projektmanager |
| Serviceaufgabe | Jeder | Jeder | Jeder | CRM-Administratoren |
| Urlaubsantrag | Jeder (Voraussetzung: gültiges Konto) |
Abhängig vom Workflow: Antragsteller Genehmiger Genehmiger Vertretung Abteilung-Personal |
Antragsteller Genehmiger Genehmiger Vertretung Abteilung-Personal |
Niemand |
| Urlaubskonto | Abteilung-Personal | Abteilung-Personal | Genehmiger Genehmiger Vetretung Kontoinhaber |
Abteilung-Personal |
| VDMA-Elemente (VDMA, VDMA-Überschriften, VDMA-Gerätetypen, Einsatzzwecke, Gerätetyp + Prüfpunkte) |
CRM-Administratoren | CRM-Administratoren | Jeder | CRM-Administratoren |
| Verträge | Abteilung-Kaufmann Geschäftsführung |
Abteilung-Kaufmann Geschäftsführung |
Jeder | Abteilung-Kaufmann Geschäftsführung CRM-Administratoren |
| Wartungsaufgabe | Servicemanager Werden in Normalfall automatisch entsprechend des Wartungsintervalls erstellt |
Jeder | Jeder | Servicemanager |
| Wartungspaket | Servicemanager | Servicemanager | Jeder | Servicemanager |
| Zeitbuchung | Jeder | Wenn Genehmigungs-Workflow aktiviert: Geschäftsführung Abteilung-Personal Wenn Workflow nicht aktiviert: Person, welche die Zeit gebucht hat |
Geschäftsführung Abteilung-Personal Projektmanager |
Abteilung-Personal |
Welche Gruppe hat welche Berechtigungen#
Abteilung-Kaufmann#
Berechtigung über Gruppe
- Auftrag / Projekt erstellen, bearbeiten, löschen
- Projekttask erstellen, bearbeiten, löschen
- Verträge erstellen, bearbeiten, löschen
Berechtigung über Rolle
- Darf die Auftragsnummer in einem bestehenden Auftrag ändern
Berechtigung über Workflow
- Workflow: Bestellung
- Darf den Einkauf bei der Abrechnung abschließen
- Workflow: Einsatz Klärung
- Sieht Einsatz in Klärung
Abteilung-Einkauf#
Berechtigung über Gruppe
- Bestellung bearbeiten
- Bestell-Material bearbeiten
Berechtigung über Rolle
- Bestell-Material: darf die folgenden Felder anpassen:
- Beschädigte Lieferung
- Liefermenge
- Erwartetes Lieferdatum
- Bestellmenge
- Ablageort
- Bestell-Material: darf die Felder im Panel „Kommentar zu Beschädigung“ anpassen
- Bestell-Material: darf die Felder im Panel „Referenzen“ anpassen
Berechtigung über Workflow
- Workflow: Bestellung
- Darf den Einkauf im Prozess bis zur Abrechnung führen
Abteilung-Personal#
Berechtigung über Gruppe
- Abwesenheit lesen, bearbeiten
- Einsatz lesen
- Urlaubsantrag lesen
- Urlaubskonto erstellen, bearbeiten, löschen
- Zeitbuchung lesen, bearbeiten, löschen
Berechtigung über Rolle
- Darf die Funktion zum Export von Zeitbuchungen nutzen
Berechtigung über Workflow
- Workflow: Urlaubsantrag
- Sieht alle Urlaubsanträge im Prozess
- Genehmigung Krankentage während des Urlaubs
- Workflow: Einsatz Klärung
- Sieht Einsatz in Klärung
- Workflow: Korrektur Zeitbuchung
- Kann zur Änderung eingereichte Zeitbuchungen bearbeiten
Adressen Genehmiger#
- Darf (wenn Genehmigungs-Workflow für Adressen aktiviert) neue Adressen genehmigen oder ablehnen
CRM-Administratoren#
Berechtigung über Gruppe
- Darf gelöschte Dokumente wiederherstellen
- Darf Konfigurationen, Schlüsselwörter und Textbausteine im CRM-Konfigurator pflegen
- Änderungsaufträge erstellen, bearbeiten, löschen (damit auch Personen neue / geänderte Berechtigungen erteilen)
- Teams erstellen, bearbeiten, löschen
- Dokument-Kategorien erstellen, bearbeiten, löschen
Berechtigung über Rollen
- Sieht das Admin-Menü und darf auf alle Funktionen darunter zugreifen

Geschäftsführung#
Berechtigung über Gruppe
- Auftrag / Projekt erstellen, bearbeiten, löschen
- Einsatz bearbeiten, löschen
- Projekttask erstellen, bearbeiten, löschen
- Verträge erstellen, bearbeiten, löschen
- Zeitbuchung bearbeiten, lesen
Berechtigungen über Workflow
- Workflow: Urlaubsantrag
- Kann alle Urlaubsanträge sehen und bearbeiten
- Workflow: Einsatz Klärung
- Freigabe eines Einsatzes in Klärung
- Workflow: Korrektur Zeitbuchung
- Kann zur Änderung eingereichte Zeitbuchungen bearbeiten
Leseschutz-Setzen#
- Darf in Dokumenten (E-Mail, Brief) einen Leseschutz aktivieren, so dass nur dort eingetragene Personen das geschützte Dokument lesen und / Oder bearbeiten können
Leseschutz-Ändern#
- Darf in einem Leseschutz versehenen Dokument diesen ändern oder entfernen. Das ist nur dann möglich, wenn der Nutzer zusätzlich als Bearbeiter in dem Leseschutz berechtigt wurde.
Leseschutz-Zugriff#
- Kann unabhängig von den im Leseschutzt definierten Berechtigungen IMMER alle Dokumente sehen und bearbeiten (diese Berechtigung sollten nur sehr wenige Personen bekommen)
Projektmanager#
Berechtigung über Gruppe
- Auftrag / Projekt erstellen, bearbeiten, löschen
- Einsatz erstellen, bearbeiten, löschen
- Projekttask erstellen, bearbeiten, löschen
- Projektvorlage erstellen, bearbeiten, löschen
- Zeitbuchung lesen
Berechtigung über Rollen
- Zeitbuchung Wert im Feld Minute anpassen
Berechtigungen über Workflow
- Workflow: Aufmaß Task
- Freigabe eines Aufmaß Task
- Workflow: Einsatz Klärung
- Freigabe eines Einsatzes in Klärung
Servicemanager#
Berechtigung über Gruppe
- Anlage löschen
- Bestellung erstellen im Wartungspaket
- Bestellung bearbeiten im Wartungspaket
- Einsatz erstellen, bearbeiten, löschen
- Gerät löschen
- Handbuch löschen
- Wartungsaufgabe erstellen, löschen
- Wartungspaket erstellen, bearbeiten, löschen
Berechtigung über Rollen
- Finalen Wartungsbericht erstellen
- Wartungspaket abschließen
- Serviceaufgabe freigeben
- Bestellungen im Wartungspaket einreichen
Workflow-Administratoren#
- Darf in jedem Workflow (abgesehen vom Urlaubsantrag) in jedem Knoten in den Prozess eingreifen und den Workflow weiterführen. Kann deshalb auch alle Dokumente sehen, die in einem Workflow bearbeitet werden.
M365
Anwendung registrieren
Registrieren Sie eine Webanwendung mit dem Azure Active Directory Admin Center#
-
Öffnen Sie einen Browser und navigieren Sie zum Azure Active Directory-Admincenter. Melden Sie sich mit einem persönlichen Konto (auch bekannt als: Microsoft-Konto) oder Arbeits- oder Schulkonto an.
-
Wählen Sie Azure Active Directory in der linken Navigation und wählen Sie dann App-Registrierungen unter Verwalten.
-
Wählen Sie Neue Registrierung. Legen Sie auf der Seite Eine Anwendung registrieren die Werte wie folgt fest.
- Setzen Sie Name auf Stella CRM.
- Setzen Sie Unterstützte Kontotypen auf Nur Konten in diesem Organisationsverzeichnis (nur "XYZ" – einzelner Mandant).
- Legen Sie unter Redirect URI die erste Dropdown-Liste auf "Web" fest und setzen Sie den Wert auf "http://localhost:3000/auth/callback" bzw. auf den Hostnamen, auf dem das CRM betrieben wird.
-
Wählen Sie Registrieren. Kopieren Sie auf der Seite Stella CRM den Wert der Application (client) ID und speichern Sie ihn, Sie benötigen ihn im nächsten Schritt.
-
Wählen Sie Zertifikate & Geheimnisse unter Verwalten. Wählen Sie die Schaltfläche Neues Client-Secret. Geben Sie unter Beschreibung einen Wert ein, wählen Sie eine der Optionen für Ablaufzeit und wählen Sie Hinzufügen.
-
Kopieren Sie den Wert des Client-Secret, bevor Sie diese Seite verlassen. Sie werden ihn im nächsten Schritt benötigen.
WICHTIG
Dieses Client-Secret wird nie wieder angezeigt, kopieren Sie es also unbedingt jetzt.
API-Berechtigungen#
Für die eingerichtete Anwendung Stella CRM müssen diverse API-Berechtigungen gesetzt werden. Dazu klicken Sie auf Berechtigung hinzufügen, wählen Microsoft Graph, entweder Delegiert oder Anwendung (beide werden i.d.R. gebraucht) und suchen dann die Berechtigung anhand des Namens.
Im Anschluss klicken Sie Administratorzustimmung für ... erteilen und bestätigen erneut mit Ja. Dies setzt endgültig die Berechtigungen.

| Berechtigungsname | Typ |
|---|---|
| AppCatalog.Read.All | Delegiert |
| AppCatalog.Read.All | Anwendung |
| Application.Read.All | Delegiert |
| Application.Read.All | Anwendung |
| BrowserSiteLists.ReadWrite.All | Delegiert |
| BrowserSiteLists.ReadWrite.All | Anwendung |
| Channel.Create | Delegiert |
| Channel.Create | Anwendung |
| Channel.ReadBasic.All | Delegiert |
| Channel.ReadBasic.All | Anwendung |
| Directory.ReadWrite.All | Delegiert |
| Directory.ReadWrite.All | Anwendung |
| Files.ReadWrite.All | Anwendung |
| Group.Read.All | Delegiert |
| Group.Read.All | Anwendung |
| Group.ReadWrite.All | Delegiert |
| Group.ReadWrite.All | Anwendung |
| GroupMember.ReadWrite.All | Delegiert |
| GroupMember.ReadWrite.All | Anwendung |
| Sites.ReadWrite.All | Delegiert |
| Sites.ReadWrite.All | Anwendung |
| Tasks.ReadWrite | Delegiert |
| Tasks.ReadWrite.All | Anwendung |
| Team.Create | Delegiert |
| Team.Create | Anwendung |
| Team.ReadBasic.All | Delegiert |
| Team.ReadBasic.All | Anwendung |
| TeamTemplates.Read | Delegiert |
| TeamTemplates.Read.All | Anwendung |
| User.Read | Delegiert |
| User.Read.All | Anwendung |
Manifest#
Damit die API-Berechtigungen nicht manuell gesetzt werden müssen, empfiehlt sich die Anpassung der Manifest-Datei. In den App-Einstellungen findet man die Manifest-Datei ganz unten in der Navigation:

Für den Wert requiredResourceAccess kann folgender Code-Block in die eckigen Klammern eingefügt werden:

{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "88e58d74-d3df-44f3-ad47-e89edf4472e4",
"type": "Scope"
},
{
"id": "c79f8feb-a9db-4090-85f9-90d820caa0eb",
"type": "Scope"
},
{
"id": "83b34c85-95bf-497b-a04e-b58eca9d49d0",
"type": "Scope"
},
{
"id": "101147cf-4178-4455-9d58-02b5c164e759",
"type": "Scope"
},
{
"id": "9d8982ae-4365-4f57-95e9-d6032a4c0b87",
"type": "Scope"
},
{
"id": "c5366453-9fb0-48a5-a156-24f0c49a4b84",
"type": "Scope"
},
{
"id": "5c28f0bf-8a70-41f1-8ab2-9032436ddb65",
"type": "Scope"
},
{
"id": "5f8c59db-677d-491f-a6b8-5f174b11ec1d",
"type": "Scope"
},
{
"id": "4e46008b-f24c-477d-8fff-7bb4ec7aafe0",
"type": "Scope"
},
{
"id": "f81125ac-d3b7-4573-a3b2-7099cc39df9e",
"type": "Scope"
},
{
"id": "89fe6a52-be36-487e-b7d8-d061c450a026",
"type": "Scope"
},
{
"id": "2219042f-cab5-40cc-b0d2-16b1540b4c5f",
"type": "Scope"
},
{
"id": "7825d5d6-6049-4ce7-bdf6-3b8d53f4bcd0",
"type": "Scope"
},
{
"id": "485be79e-c497-4b35-9400-0e3fa7f2a5d4",
"type": "Scope"
},
{
"id": "cd87405c-5792-4f15-92f7-debc0db6d1d6",
"type": "Scope"
},
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
},
{
"id": "e12dae10-5a57-4817-b79d-dfbec5348930",
"type": "Role"
},
{
"id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30",
"type": "Role"
},
{
"id": "8349ca94-3061-44d5-9bfb-33774ea5e4f9",
"type": "Role"
},
{
"id": "f3a65bd4-b703-46df-8f7e-0174fea562aa",
"type": "Role"
},
{
"id": "59a6b24b-4225-4393-8165-ebaec5f55d7a",
"type": "Role"
},
{
"id": "19dbc75e-c2e2-444c-a770-ec69d8559fc7",
"type": "Role"
},
{
"id": "75359482-378d-4052-8f01-80520e7db3cd",
"type": "Role"
},
{
"id": "5b567255-7703-4780-807c-7be8301ae99b",
"type": "Role"
},
{
"id": "62a82d76-70ea-41e2-9197-370581804d09",
"type": "Role"
},
{
"id": "dbaae8cf-10b5-4b86-a4a1-f871c94c6695",
"type": "Role"
},
{
"id": "9492366f-7969-46a4-8d15-ed1a20078fff",
"type": "Role"
},
{
"id": "44e666d1-d276-445b-a5fc-8815eeb81d55",
"type": "Role"
},
{
"id": "23fc2474-f741-46ce-8465-674744c5c361",
"type": "Role"
},
{
"id": "2280dda6-0bfd-44ee-a2f4-cb867cfc4c1e",
"type": "Role"
},
{
"id": "6323133e-1f6e-46d4-9372-ac33a0870636",
"type": "Role"
},
{
"id": "df021288-bdef-4463-88db-98f22de89214",
"type": "Role"
}
]
}
Dies entspricht den API-Berechtigungen laut Tabelle. Im Anschluss muss das Manifest gespeichert werden.
Middleware#
Für die Kommunikation von Stella CRM mit M365 wird eine Middleware benötigt. Diese läuft in einem Docker-Container. Das Serversystem muss also Docker unterstützen und es muss entsprechend installiert sein.
| Distribution | Link |
|---|---|
| Rocky Linux | Anleitung |
| Ubuntu | Anleitung |
Setup#
Im Repository der Helper-Anwendung gibt es das Script build-stella-m365.sh. Dieses führt neben einer Aktualisierung per git-pull auch die Erzeugung des Docker-Images durch. Dieses muss einmalig ausführbar gemacht werden mit chmod +x build-stella-m365.sh.
Alternativ geht das auch manuell:
cd nodejs/projektakte
docker build --tag 'stella-m365' --no-cache .
Im Anschluss kann dann die Middleware mit
docker run -d --name stella-m365 -p 3000:3000 stella-m365:latest
gestartet werden. Wir empfehlen die Nutzung von Portainer zur komfortablen Verwaltung von Docker Containern.
Testen der Middleware#
Um den Betrieb der Middleware zu testen, geben Sie im Browser folgende URL ein:
http://<host_oder_ip>:3000/
Die Antwort sollte folgende sein:
{
"status": "ok",
"message": "Stella CRM M365 connector is ready to rumble"
}
Setup#
Die Middleware wird von der Stella Helper App aus aufgerufen. Dazu werden essentielle Informationen über die M365 Umgebung benötigt. Diese müssen zuvor in der Konfiguration der Stella Helper App definiert werden:
| Feld | Beschreibung |
|---|---|
| Tenant ID * | ID des M365 Tenants |
| Site ID (Root Site) * | Vollständige Site ID, siehe Abschnitt Site ID ermitteln |
| Stella App ID * | Die App ID, die bei der Registrierung von Stella CRM in M365 generiert wurde |
| Stella Client Secret * | Das Client Secret dieser App in M365. Achten Sie darauf, dass Sie den Wert und nicht die ID des Secrets wählen! |
| Teams Template ID | muss standard heißen |
| Folder Name | Name des Ordners, der als Vorlage in ein neues Team kopiert werden soll, z.B. Projektakte |
| Template Drive ID (Root Folder) | ID des Root Ordners der Site, siehe Abschnitt Ermitteln der Vorlagen ID |
| Template ID | ID des o.g. Ordners, siehe Abschnitt Ermitteln der Vorlagen ID |
| Base URL Stella Middleware | URL zur Stella M365 Middleware, z.B. http(s)://middleware.local:3000 |
Tenant ID ermitteln#
Gehen Sie zum Microsoft Entra Admin Center (https://entra.microsoft.com/). Melden Sie sich mit Ihren Admin-Zugangsdaten an. Klicken Sie auf Identität > Übersicht. Die Tenant ID wird unter Basisinformationen angezeigt.
Site ID ermitteln#
Rufen Sie als angemeldeter Nutzer den Microsoft Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) auf und geben Sie dort folgende URL ein:
https://graph.microsoft.com/v1.0/sites/root
Der Response sieht wie folgt aus:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites/$entity",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET sites('<key>')?$select=displayName,error",
"createdDateTime": "2020-10-16T22:12:37.283Z",
"description": "",
"id": "demo.sharepoint.com,abc86969-d4f3-xxxx-849f-7d737242ce1f,5e243794-c1cf-xxxx-a483-b0c4309a04c1",
"lastModifiedDateTime": "2025-03-27T11:24:49Z",
"name": "",
"webUrl": "https://demo.sharepoint.com",
"displayName": "Communication site",
"root": {},
"siteCollection": {
"hostname": "demo.sharepoint.com"
}
}
Im Feld id findet sich die Site ID.
Es kann sein, dass Sie im Tab Modify Permissions die Berechtigungen des Graph Explorers explizit freigeben müssen, um den Request anzufordern.
Hinweis
Können die Berechtigungen hier nicht freigegeben werden, so muss der allgemeine Admin-Consent zur Anwendung "Graph Explorer" gegeben werden. Eine Beschreibung dafür finden Sie hier.
Liste aller Sites#
Sucht man eine bestimmte Site, z.B. um die Site ID im Zusammenhang mit einem Liegenschafts-Ordner zu nutzen, bietet sich die Liste aller Sites an, auf die man Zugriff hat. Im Graph Explorer muss dazu die URL https://graph.microsoft.com/v1.0/sites?search=* aufgerufen werden. Der Response beinhaltet ein Array aller Sites inkl. deren IDs.
Ermitteln der Vorlagen ID#
Die Stella M365 Middleware bietet eine einfache Möglichkeit, diverse Einzelwerte aus dem Tenant automatisch zu ermitteln. Erforderlich dazu sind nur die * markierten Einstellungen. Bei der Site ID wird nur der erste Teil (also <tenant>.sharepoint.com) benötigt.
Option 1: Postman#
Erstellen Sie in Postman einen neuen Request, Typ POST. Die URL ist die Root-URL der Stella Middleware und /setup. Im Request Body sind die o.g. Daten anzugeben:
{
"tenantId":"xxxxxx-6257-4f05-ad98-xxxxxx",
"appId":"xxxxxx-570f-4d94-acd9-f41cbfc7f3c5",
"clientSecret":"xxxxxxxCIo63JI.O51N8b5z",
"sharepointUrl": "demo.sharepoint.com",
"templateName": "Projektakte"
}
Option 2: M365 Job ertstellen#
Die alternative und einfachere Methode ist die Erstellung eines M365 Jobs in der Stella Helper App. Gehen Sie dazu in der Anwenung auf Create, bitM365Job.

Füllen Sie die Maske entsprechend aus:

Weitere Angaben sind nicht erforderlich. Warten Sie nun die Abarbeitung des Jobs durch die Stella Helper App ab. Ist dies erledigt, sehen Sie folgende Daten in der Maske:

Der Response findet sich im Feld Response.
Der Response bei beiden Optionen stellt dann bei Erfolg die restlichen Daten in dieser Form dar:
{
"rootSite": "demo.sharepoint.com,xxxxx-d4f3-4668-849f-xxxxxxx,xxxxx-c1cf-4dd2-a483-xxxxxxx",
"rootFolder": "b!NtmjzPPabcbabcbaBMGCfkRf4yZfxxxxxxxTHis",
"templateId": "xxxxxITZEZNU5AQECQNZOB",
"plannerId": "com.microsoft.teamspace.tab.planner",
"oneNoteId": "xxxxxx-def2-4297-adad-xxxxxx",
"status": "ok",
"message": "Setup data successfully delivered"
}
Übertragen Sie die Werte in die Konfiguration. Dabei gilt folgende Zuordnung:
| Feld im Response | Feld in der Konfiguration |
|---|---|
| rootSite | Site ID (Root Site) |
| rootFolder | Template Drive ID (Root Folder) |
| templateId | Template ID |
Graph Explorer#
Es kann sein, dass in einem neuen Tenant zunächst der Admin Consent für alle oder bestimmte Nutzer für die Nutzung der Anwendung "Graph Explorer" gegeben sein muss. Dies ist generell zunächst nicht der Fall. Zum Setzen der Berechtigung loggen Sie sich als Tenant-Admin auf https://portal.azure.com/ ein.
Suchen Sie hier nach Unternehmensanwendungen und klicken Sie den gefundenen Eintrag an. Klicken Sie in der Übersicht der Anwendungen auf "Graph Explorer". Erweitern Sie den Bereich Sicherheut in der Navigation und klicken dort auf Berechtigungen. Auf der dann sichtbaren Seite dann auf den Button Grant admin consent for XYZ klicken.

M365 Jobs#
Die Interaktion mit M365 erfolgt indirekt über die Middleware. Dabei müssen in der Stella Helper App entsprechende Hintergrund-Jobs erzeugt werden. Periodisch werden diesen dann abgearbeitet, der Nutzer benötigt keine weitere Interaktion mit dem Backend.
Job-Ansicht#
Die Stella Helper App bietet eine Übersicht der anstehenden bzw. bereits bearbeiteten M365 Jobs:

Die Ansicht zeigt den Status des Jobs sowie den Typ (Job-Status). Die Spalte Message zeigt die letzte Meldung aus der Verarbeitung.
Job Typen#
Es gibt verschiedene Job-Typen, die unterschiedliche Ergebnisse liefern. Die folgenden Abschnitte beschreiben die Job-Typen und deren Eigenschaften, die zwingend vorgegeben werden müssen. Folgende Job Typen sind definiert:
| Job Typ | Funktion | Pflichtfelder |
|---|---|---|
| setup | Ermitteln der essentiellen Daten des M365 Tenants | Tenant ID, App ID, Client Secret, Sharepoint URL und den Namen der Ordnervorlage |
| team | Erstellung eines Teams für ein Projekt oder Auftrag | Teamname, Beschreibung, E-Mail des Projektleiters, DocId des Projekt- bzw. Auftrags-Dokuments |
| locationfolder | Erstellt einen Ordner für eine Liegenschaft | Root-Ordner (dieser muss bereits existieren), Name der Liegenschaft, DocId des Liegenschaft-Dokuments |
Darüber hinaus gibt es weitere Typen für die Zwischenstände während der Team-Erstellung, da dies kein Prozess ist, der mit einem Schritt erledigt ist. Diese Zwischenstände sind nicht einzeln anwendbar.
| Job Typ | Funktion |
|---|---|
| folder | Ermittelt den Root-Ordner des neuen Teams |
| copy | Kopiert den Projekt-Ordner in den Root-Ordner |
| planner | derzeit unbenutzt |
| Benachrichtigung nach Erstellung des Teams |
M365 Jobs in Stella CRM#
Zentrales Element im Stella CRM ist das Script glo_SharedFunctions.M365. Es enthält eine Methode, um ein entsprechendes Job-Dokument in der Stella Helper App zu generieren.
M365.createJob(String jobType, String siteId, Document doc);
Als jobType muss entweder locationfolder (Sharepoint Ordner zu einer Liegenschaft erzeugen) oder team (Projekt-Team erstellen) angegeben werden. Für den Sharepoint-Ordner ist die Angabe der siteId zwingend erforderlich. Diese kann bzw. sollte aus einem Stella Configuration Element mittels API.getConfigValue('M365', 'RootSiteId') geholt werden. Zudem wird dem Job der RootFolder mitgegeben. Dies ist der Name des Ordners, der bereits in der Site existieren muss und in dem dann der neue Ordner pro Liegenschaft erzeugt wird. Vorgabename ist hierbei Liegenschaften, dieser Name kann aber mittels Stella Configuration Element frei gewählt werden. Intern wird hierzu der Aufruf API.getConfigValue("M365", "RootFolder") verwendet.
Eine entsprechende Konfiguration im Stella CRM sieht dann wie folgt aus:

Für die Ermittlung der entsprechenden Site IDs siehe Abschnitt Setup, Site ID ermitteln
Die Aktionen in der Liegenschafts- sowie der Auftragsmaske sehen wie folgt aus:
#include(glo_SharedFunctions.M365)
M365.createJob("locationfolder", "siteId");
Dies erzeugt einen Job, um einen Ordner zu einer Liegenschaft zu erstellen.
Das folgende Script erzeugt einen Job, um ein Team für einen Auftrag bzw. ein Projekt zu erzeugen:
#include(glo_SharedFunctions.M365)
M365.createJob("team", null);
Optional erlaubt die Methode einen dritten Parameter, das Document. So kann diese Methode auch in Ansichten mit Mehrfachauswahl genutzt werden.
M365 Integration deaktivieren#
Wenn die Aktionen zur Erstellung der M365 Elemente nicht gewünscht sind, können diese mittels des Elements ShowM365Actions und einem Wert anders als true realisiert werden. Die Aktionen werden dann in den Masken nicht mehr angezeigt.
Mailissa#
Mit Hilfe des Stella Domino Connectors können Mails aus Outlook ins CRM übertragen werden. Im folgenden Abschnitt ist sowohl die Einrichtung des Connectors als auch der Zusatz zur automatischen Mailzuordnung im CRM beschrieben.
Einrichtung des Connectors#
Der Stella Domino Connector ist ebenfalls eine Notes-Anwendung, die auf dem Server platziert werden muss.

ACL#
Für die ACL gilt folgender Vorschlag:
| ACL Eintrag | Zugriffslevel | Optionen |
|---|---|---|
| Default | Kein Zugriff | - |
| Anonymous | Kein Zugriff | - |
| LocalDomainServers | Manager / Editor | Dokumente löschen |
| LocalDomainAdmins | Manager | Dokumente löschen |
| (Normale Nutzer) | Autor | Dokumente erstellen (für Logs) |
Datenverbindung einrichten#
Im Connector muss ein Ziel eingerichtet werden. Dies ist in der Regel die Dokumente-Datenbank des CRM, kann aber jede andere Notesdatenbank sein. Klicken Sie dazu in der Startansicht der Anwendung auf New Database Connection

In der Maske sind dann folgende Felder auszufüllen:
| Feld | Beschreibung | Pflichtfeld |
|---|---|---|
| Unique Key | eindeutiger Name der Verbindung, wird später nicht sichtbar sein | ja |
| Category | sichtbarer Name, unter dem die Verbindung später im Addon kategorisiert wird | ja |
| Title | sichtbarer Name der Verbindung im Addon | ja |
| Server | Server der Zieldatenbank | ja |
| Full Path | Pfad zur Zieldatenbank | ja |
| Enabled | sollte auf yes stehen |
ja |
| Read Access | Lesernamen, um diese Verbindung nur eingeschränkt sichtbar zu machen | nein, leer = alle Nutzer sehen dieses Ziel |
Die Felder im Abschnitt Mapping sind alle optional. Beim Übertragen der Mail werden die Vorgabenamen der Felder für die entsprechende Funktion genutzt, durch Angabe eines anderen Feldnamens können hier andere Feldnamen mit deren Werten genutzt werden. Für die Funktion mit dem Stella CRM sind hier Anpassungen nötig:
| Feld Original | Feld Stella |
|---|---|
| Form | gen_mail |
| SendTo | SendToExtern |
| CopyTo | CopyToExtern |
| BlindCopyTo | BCCme |
Im Abschnitt Relation / Agent gilt es ebenfalls, für Stella CRM spezifische Daten anzugeben:
| Feld | Beschreibung |
|---|---|
| Stella CRM orkflow ID | UniversalID des Workflow, mit dem die übertragene Mail dann weiter verarbeitet wird. Diese ermittelt man direkt aus der Stella Konfiguration in Aveedo |
| Field name where related document UNID is stored | bleibt leer, da die Relation mittels Agenten gesetzt wird |
| Execute Agent (Name or Alias) | Name oder Alias des Transferagenten, i.d.R. transferMail. Siehe dazu auch Abschnitt Transferagent |
Für die Übertragung von Mails in Stella CRM ist die Definition einer View Configuration nicht erforderlich.
Log-Ansichten#
In den Log-Ansichten finden Sie wertvolle Informationen zum Troubleshooting. FEs wird empfohlen, das Loglevel in der Connector-Konfiguration dazu entsprechend Hhochzusetzen, z.B. auf SILLY.
Connector Konfiguration#
Damit die Anwendung generell läuft, muss eine Konfiguration hinterlegt werden. Ist keine vorhanden, erstellt man mit der Aktion New Configuration eine neue. In der Maske gilt es folgende Felder auszufüllen:
| Feld | Beschreibung | Pflichtfeld |
|---|---|---|
| Domino Server | Server, auf dem der Connector installiert ist | ja |
| Log Level | Log Level für das Log, im Normalbetrieb sollte es nicht höher als INFO sein |
ja |
| Log Level for Notification | Log Level für Benachrichtigungen an Administratoren, Vorschlag: ERROR |
ja |
| Notification E-Mail Address | Mailadresse für diese Benachrichtigungen. Wenn leer, dann gibt es keine Benachrichtigungen | nein |
| Stella CRM Helper DB | Link zur Stella Helper App | ja |
| Stella CRM Address DB | Link zur Stella Adress-Datenbank | ja |
| Stella CRM Documents DB | Link zur Stella Dokumenten-Datenbank | ja |
| OCR Source Field for Mail | Quellfeld für die OCR-Behandlung, i.d.R. body |
ja |
| OCR Target Field for Mail | Zielfeld für die OCR-Behandlung, i.d.R. attachments_ocr |
|
| Readers | Lesernamen für die importierte Mail | nein |
| Authors | Autornamen für die importierte Mail | nein |
Transferagent#
Im Stella CRM besteht die Möglichkeit, übertragene Mails automatisch einem Kunden, einem Kontakt, einer Liegenschaft und sogar einem Projekt zuzuordnen. Wenn hierbei die Mailadresse des Absenders im CRM gefunden wird, kann die Zuordnung entsprechend erfolgen. Hierbei wird dann auch die Liegenschaft bzw. auch das aktuelle Projekt ermittelt. Dabei wird die letzte Mail, die zu diesem Kontakt existiert, gesucht und die dortige Zuordnung entsprechend übernommen (sofern diese Mail eine Zuordnung hat). Wird kein Kontakt gefunden, so wird eine Mail-Domänensuche durchgeführt und ggf. nur eine Zuordnung zum Unternehmensdokument durchgeführt. Das geschieht selbst dann, wenn die Mailadresse lediglich in der Domäne übereinstimmt.
Beispiel: Absender ist support@company.com und im Unternehmensdokument steht info@company.com als Mailadresse. Die Zuordnung findet trotztdem statt.
Der Transferagent muss sich in der Zieldatenbank für den Import befinden, d.h. i.d.R. die Dokumenten-Datenbank. Muss der Agent erst erstellt werden, so muss die helper-xxx.jar eingebunden werden. Der Agent muss vom Typ Java sein und der Code lautet dann wie folgt:
import com.nintera.mailissa.MailissaHelper;
import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Document;
import lotus.domino.Session;
public class JavaAgent extends AgentBase {
// this agent must be placed in the CRM Data database
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document doc = agentContext.getDocumentContext();
MailissaHelper mh = new MailissaHelper(session, session.getCurrentDatabase());
mh.handleDoc(doc);
doc.save();
} catch (Exception e) {
e.printStackTrace();
}
}
}
OCR-Behandlung#
Übertragene Mails können automatisch dem OCR-Prozess unterzogen werden, sofern Quell- und Zielfeld in der Konfiguration angegeben wurde. Hierbei werden Dateianhänge vom Typ PDF mittels des Cloud-Services ConvertAPI verarbeitet und per Texterkennung neu erstellt und gespeichert. Das Ergebnis ist eine durchsuchbare PDF-Datei. Der Prozess findet im Hintergrund und nicht in Echtzeit statt.
Thumbnails#
Thumbnails oder auch Vorschaubilder können auf Basis großer Bilder und Bilddateien in Dokumenten generiert werden. Dazu wird in der Stella Hilfsanwendung eine neue Datenquelle (Data Source) erstellt und entsprechend konfiguriert. Zunächst muss - wie bei allen Quellen - die Datenbank gewählt werden, aus denen die Dokumente ermittelt und bearbeitet werden sollen:

| Feld | Beschreibung |
|---|---|
| Usage | Hier muss Thumbnail Generation gewählt werden |
| Enabled | Hiermit kann die Datenquelle aktiviert werden |
| Server of Source Database | Server der Quelldatenbank (per Button kann die Datenbank ausgewählt werden) |
| Path to Source Database | Dateipfad der Quelldatenbank |
| Title | Frei wählbarer Name dieser Datenquelle |
| Replica ID | wird automatisch gesetzt |
Die Detailangaben zur Thumbnailerstellung erfolgen dannim Reiter Thumbnails:

| Feld | Beschreibung |
|---|---|
| Document Selection Formula | Hier muss in der Syntax einer Ansichtsauswahl eine Formel eingegeben werden, die die gewünschten Dokumente beschreibt, z.B. form="picture" |
| Item that contains attachments | Feld mit den Anhängen, die zu Thumbnails umgewandelt werden sollen. Dieses darf auch andere Dateiformate enthalten, da diese später übersprungen werden |
| Item that will hold thumbnails | Feld, in dem die Thumbnails als MIME gespeichert werden sollen |
| Dimension X | max. Auflösung des Thumbnails X |
| Dimension Y | max. Auflösung des Thumbnails Y |
Die letzten drei Felder gibt es doppelt, so dass pro Dokument zwei verschiedene Bildquellen und Thumbnailfelder definiert werden können.
Geolokation#
Geodaten sammeln#
In der Stella Helper Applikation kann für die automatische Aktualisierung eine Datenbank-Konfiguration vom Typ "Geolocation" angelegt werden. Die wesentlichen Angaben sind
Geolocation Config#
- Quelldatenbank
- Auswahlformel der Dokumente
- Formel für die Berechnung der Adressdaten
- Feldnamen für die Speicherung der Koordinaten

Darüber hinaus wird zur Dokumentenauswahl auch noch das Feld __geoupdate mit einem Wert von 1 hinzugezogen. Nur Dokumente mit diesem Flag werden entsprechend bearbeitet.
Vorbereitung#
Der Microservice nutzt den HERE Maps Service über ein REST API. Dazu muss bei HERE ein Konto angelegt, ein Projekt erzeugt und ein API Key generiert werden. In der Stella Helper Anwendung muss in der Konfiguration sowohl die API Endpoint URL als auch dieser API Key hinterlegt werden. Die URL ist im Feld bereits vorgegeben.

Umkreissuche#
Eine Spezialfunktion ist die Umkreissuche. Hierbei kann zu einem Firmendokument (alternativ Standort oder Liegenschaft), zu dem zuvor die Geodaten ermittelt wurden, eine Umkreissuche nach anderen Dokumentarten durchgeführt werden, z.B. nach Handwerkern, die in einem Umkreis von x Kilometern zu diesem Standort verfügbar wären. Der Radius wird hierbei beim Handwerker festgelegt.
Damit diese Suche einfach durchführbar ist, wird dazu in der Stella Helper Applikation ein Dokument vom Typ "Geocollection Config" angelegt. Später wird diese Konfiguration lediglich durch eine eindeutige ID identifiziert.
Geocollection Config#
In diesem Dokument müssen alle Felder ausgefüllt werden.

| Feld | Beschreibung |
|---|---|
| ID | Eindeutige Kennung für diese Konfiguration |
| Form or Object Name | Aveedo Objekt- oder Layoutname. Hiermit definiert man die Datenquelle |
| Selection Formula for Source Data | Auswahlformel für die Suchdaten. Intern wird zusätzlich ebenfalls auf das Feld __geoupdate mit dem Wert 1 geprüft, d.h. die Formel wird ergänzt |
| Fieldname for Latitude | Feld in den Suchdaten, welches den Breitengrad enthält |
| Fieldname for Longitude | Feld in den Suchdaten, welches den Längengrad enthält |
| Fieldname for Operating Radius | Feld, welches den Einsatzradius z.B. für den Handwerker enthält |
| Data Formula for Evaluation | Für die Darstellung genutzte Formel, um die Daten eines Suchergebnisses anzuzeigen |
| Fieldname for Category | Die Suchdaten können noch kategorisiert sein, dazu wird später ein Element bereitgestellt, um das Ergebnis zu filtern. |
Der folgende Code ist ein Beispiel zur Anzeige des Ergebisses inklusive Filterfunktion. Dieser kann in einem Custom Control direkt im Document Layout genutzt werden.
<div class="uk-grid">
<div class="uk-width-1-3 uk-form-row">
<span class="uk-form-label">Gewerk</span>
<div class="uk-form-controls"><select id="craftselect" class="uk-width-1-1">
</select></div>
</div>
<div class="uk-width-2-3 uk-form-row">
<button type="button" class="uk-button" onclick="loadGeo()">Aktualisieren</button></div>
<div class="uk-width-1-1 uk-form-row">
<span class="uk-form-label">Ergebnisse</span>
<div class="uk-form-controls" id="craftsmen"></div>
</div>
</div>
<script type="text/javascript">
var crafts = new Array();
var data;
function addCategories(cats) {
for (var x = 0; x < cats.length; x++) {
var cat = cats[x];
if (crafts.indexOf(cat) == -1) {
crafts.push(cat);
}
}
}
function loadGeo() {
var html = $('#craftsmen');
var lat = '<![JAVASCRIPT[API.getFieldValueNumber("locLat")]]>';
var lng = '<![JAVASCRIPT[API.getFieldValueNumber("locLng")]]>';
if (lat == 'null' || lng == 'null') {
html.html('Für diesen Markt sind keine Geodaten hinterlegt.');
return;
}
html.html('Bitte warten...');
$.ajax({
method: 'GET',
url: '<![JAVASCRIPT[API.getConfigValue("System", "HelperUrl")]]>/index.xsp/geo',
data: {
'lat': lat,
'lng': lng,
'id': 'craftsmen'
}
}).done(function (response) {
html.empty();
// response is already JSON
var json = response;
if (json.status == "ok") {
data = json.data;
for (var x = 0; x < data.length; x++) {
var cr = data[x];
addCategories(cr.categories);
html.append('<div><a target="_blank" href="' + cr.url + '">' + cr.text + '</a></div>');
}
}
// populate combo box
$('#craftselect').empty();
$('#craftselect').append(new Option('- Alle -', ''));
$.each(crafts, function (idx, val) {
$('#craftselect').append(new Option(val, val));
});
$('#craftselect').trigger('chosen:updated');
});
}
function filter(cat) {
console.log("Filter", cat);
var html = $('#craftsmen');
html.empty();
for (var x = 0; x < data.length; x++) {
var cr = data[x];
if (cr.categories.indexOf(cat) != -1 || cat == '') {
html.append('<div><a target="_blank" href="' + cr.url + '">' + cr.text + '</a></div>');
}
}
}
$('#craftselect').on('change', function () {
filter($(this).val());
})
loadGeo();
</script>
PDF/DOCX Generierung
PDF & DOCX Generierung#
Zusätzlich zum normalen Erzeugen von DOCX und PDF Dokumenten aus Word-Templates, unterstützt Stella mittels einer externen API die ERstellung dieser Formate auf Basis von beliebigem HTML.
Setup#
Für die Nutzung muss ein Konto für ConvertAPI bestehen und ein Token generiert worden sein:

Dieser Token muss in der Konfiguration der Helper Applikation eingetragen werden:

Dieser Token gilt dabei sowohl für die PDF- als auch für die DOCX-Generierung.
Auslöser#
Normalerweise wird der Service in der Helper Applikation periodisch aufgerufen durch ein periodisches Script im CRM. Die URL lautet
https://<hostname>/pfadzumhelper/helper.nsf/index.xsp/html2pdf
bzw.
https://<hostname>/pfadzumhelper/helper.nsf/index.xsp/html2docx.
Es gibt einen Rückgabewert in Form eines JSON Response, der im Erfolgsfall so aussieht:
{
"message": "Found 1 data source(s) for html conversion generation\n",
"errors": "",
"status": "ok"
}
Die Menge an "gefundenen Quellen" im message-Teil variiert je nach dem wieviele definiert wurden.
Datenquelle definieren#
Die Funktion erwartet eine Datenbankkonfiguration (Data Source) in der Helper Applikation vom Typ "HTML 2 PDF". Dadurch werden die Infos im Reiter HTML 2 PDF relevant:

| Feld | Beschreibung |
|---|---|
| Document Selection Formula | Auswahlformel für Dokumente, die zu konvertierendes HTML in einem Feld enthalten |
| Flag Field Name | Feld, welches später durch einen neuen Wert beschreibt, dass das Dokument konvertiert wurde |
| Flag Computation Formula | Werteformel für das Flag Field, i.d.R. ein statischer Wert |
| Source Field Name (MIME) | Feld im Dokument, welches das HTML enthält |
| Target Field Name (Attachment) | Feld im Dokument, in dem später die Datei gespeichert wird |
| Field for PDF Title | Feld, das den Titel für das spätere PDF/DOCX Dokument enthält |
Office Vorlagen#
Word#
Wenn Kundenvorlagen für DOCX hinterlegt werden sollen, gibt es bezüglich Designs (vor allem bei Hintergrundbildern) Dinge zu beachten:
Wenn die Kundenvorlage ein Hintergrundbild verwendet, muss die Vorlage entsprechend aufbereitet werden. Hierzu die Vorlage öffnen, Doppelklick in die Kopfzeile (dort wird das Hintergrundbild definiert), das Hintergrundbild einfügen bzw. markieren und in Zwischenablage kopieren. Jetzt eine weitere Seite (Seitenumbruch) einfügen und dort dann in der Kopfzeile das Hintergrundbild ebenfalls einfügen. Damit in der Folge im DOCX keine leere Seite am Ende erzeugt wird, muss die 2. Seite von gerade eben wieder gelöscht werden (bzw. der Seitenumbruch wird gelöscht). Es sieht zwar nun so aus, als wäre das Hintergrundbild dann ebenfalls entfernt worden, dem ist aber nicht so und das DOCX wird dieses dann auch auf den Folgeseiten enthalten.
Sichern & Wiederherstellen#
Hinweis
Diese Funktionen sind nur in der Stella Demo-Umgebung relevant

Für die Demo-Umgebung steht eine einfache Sicherung der Daten und deren Wiederherstellung zur Verfügung. Dies erlaubt es, für Demonstrationszwecke einen plausiblen Datenbestand zu generieren. Der Prozess dafür besteht aus zwei Teilen: die Sicherung und das Wiederherstellen der Daten. Dabei ist die Sicherung als einmaliger Vorgang gedacht, sobald ein plausibler Datenbestand eingerichtet wurde. Es wird jeweils nur ein einziger Datenbestand vorgehalten, es wird keine Versionierung vorgenommen.
Die Wiederherstellung kann mehrmals ausgeführt werden. Dazu gibt es zwei Varianten: Daten, die nicht im Backup vorhanden sind, löschen oder beibehalten. Dies erlaubt es, zusätzliche Daten im Demosystem zu halten, die dann eben nicht vor dem Wiederherstellen gelöscht werden. Andernfalls wird der Datenbestand aus der Sicherung übernommen und alles Weitere entfernt.

Eine Besonderheit sind Einsatz- und Urlaubsdaten: diese Werden wöchentlich modifiziert, d.h. Bestandsdaten werden bezüglich der Datumsfelder immer auf die aktuelle Woche geändert, so dass immer Demodaten für den aktuellen Zeitraum zur Verfügung stehen.
Einsatzplanung#
Die Einsatzplanung verknüpft das Projektmanagement, den Urlaubsplaner und das Wartungsmodul bzgl. der Aufgaben bzw. Einsätze für Aufgaben für die jeweiligen Mitarbeiter.
Setup#
Zur Einrichtung der Anwendung gibt es sowohl eine Konfiguration als auch eine spezielle URL, die zum Verteilen bestimmter Ansichten aufgerufen werden muss.
In der Konfiguration (Notes) muss die Aveedo Instanz (das CRM selbst) angebeben werden sowie die Application Instance ID der Anwendung CRM und Vacation Manager.
Die CRM URL verweist auf die Startseite des CRM, in der Regel ist das ../crm.nsf, wenn die Datenbank crm.nsf heißt und im gleichen Verzeichnis wie die Einsatzplanung liegt.
Man kann hier ein Logo als Anhang hinterlegen. Falls kein Logo hinterlegt wird, wird das Stella CRM Logo angezeigt.
ACL#
Primär entscheidend ist, dass der Nutzer mindesten Autor in der ACL ist, da Log-Dokumente angelegt werden. Die Erstellung der Einsätze selbst erfolgt dann in der Datenbank, die im CRM für das Objekt crm_operation definiert ist. In dieser Datenbank benötigt der Nutzer natürlich entsprechende Bearbeitungsrechte.
Vorgabe-ACL#
| Nutzer/Gruppe | ACL Level | Optionen | Rollen |
|---|---|---|---|
| Default | Autor | Dokumente erstellen | - |
| Anonymous | Kein Zugriff | - | - |
| LocalDomainAdmins | Manager | Dokumente löschen | [Admin], ggf. [Setup] |
| LocalDomainServers | mind. Editor | - | - |
Weitere Einträge optional.
Ansichten kopieren#
Nachdem hier alles eingerichtet wurde, muss zum Abschluss folgende URL aufgerufen werden (Beispiel):
https://<hostname>/pfad_zur_db/einsatz.nsf/index.xsp/setup
Entscheident ist hier der Teil /setup. Diese URL verteilt spezielle Ansichten in verschiedenen Datenbanken der jeweiligen o.g. Anwendungen. Diese werden zum Auslesen der Daten benötigt. Dies ist ein einmaliger Prozess, der i.d.R. ggf. nur wiederholt werden muss, wenn es ein Update der Einsatzplanung gibt.
Feiertage einlesen#
Mit Hilfe des folgenden Aufrufs können die Standard-Feiertage für Deutschland eingelesen werden:
https://<hostname>/pfad_zur_db/einsatz.nsf/data.xsp/holidays
Dies erzeug neue Dokumente in der Einsatzplanung, die später als Einsätze in der Übersicht auftauchen, farblich analog zu den Urlauben und allgemeinen Abwesenheiten. Feiertage werden für alle Mitarbeiter generiert, sofern der Feiertag für den Mitarbeiter relevant ist. Ob dies der Fall ist, wird durch das Feld Bundesland (state) im Kontakt-Dokument definiert. Ist hier keine Angabe gemacht, so werden keine spezifischen Feiertage berücksichtigt und es gelten alle Feiertage. Zur Kontrolle der Feiertage gibt es eine entsprechende Ansicht. Es werden immer 3 Jahre im Voraus eingelesen. Im CRM sollte per periodischem Script mind. 1x pro Jahr die URL aufgerufen werden. Da es dieses Intervall nicht gibt, empfiehlt sich das kleinste Intervall von "Daily".
Definition des Bundeslandes im Kontakt#
Gültige Alias-Werte für die Auswahl des Bundeslandes sind:
"by", "be", "bb", "hb", "he", "mv", "ni", "nw", "rp", "sl", "sn", "st", "sh", "th"
Die genutzten Schlüsselwürter für das Feld state sind crm_States.
Abrechnung
Abrechnung für die ConverterAPI#
Einleitung#
Wird in Stella die ConvertAPI (https://www.convertapi.com/) benutzt, ist es ratsam, die sogenannte Billing API einzurichten, um Informationen zur Nutzung zu ermitteln.
Einrichtung#
Rufen Sie die ConvertAPI Seite auf und loggen Sie sich ein bzw. melden Sie sich an. Im Kundenbereich findet man dann die Menüpunkte, um alle benötigten IDs und Keys zu ermitteln:

Es werden folgende Daten benötigt, um diese in die Stella Helper Konfiguration einzutragen:
- Secret Key
- API Token
Den Secret Key finden man im Bereich Secret Key. Hier kann dieser auch erneuert werden bei Bedarf. Vergessen Sie dann nicht, diesen Key auch in der Konfiguration zu ändern.
Den API Token kann man beliebig oft anlegen, in der Regel tut man dies pro Mandant bzw. Kunde. API Tokens haben eine Laufzeit, i.d.R. 10 Jahre. Wird ein Token kompromittiert, kann dieser auch gelöscht und neu erzeugt werden.
In der Konfiguration muss zudem noch gewählt werden, welchen Dienst man nutzen möchte. Verfügbar sind die Optionen EU und Non-EU.

Nutzung abfragen#
Best practise ist die Nutzung eines periodischen Scripts in Stella. Dies ist ein Beispiel:
var Billing = {
URL: API.getConfigValue("helper", "URL"),
USERNAME: API.getConfigValue("helper", "Domino Username"),
PASSWORD: API.getConfigValue("helper", "Domino Password"),
pullData: function(){
var result = API.rest(this.URL + '/billingConvertAPI', this.USERNAME, this.PASSWORD);
API.log().forceToBackend().info(result);
}
}
Billing.pullData();
Sinn und Zweck ist es, dieses Script mindestens 1x täglich laufen zu lassen. Das sammelt alle Daten zum aktuellen Monat. Möchte man explizit einen anderen Monat/ein anderes Jahr einlesen, so kann dies mit den URL Parametern in dieser Form erfolgen:
http://localhost/Stella/helper.nsf/index.xsp/billingConvertAPI?month=10&year=2023
Die Reihenfolge der Parameter spielt dabei keine Rolle.
Daten sichten#
Die Stella Helper App enthält eine Übersichtsseite (billing_convert.xsp), die sie im Browser öffnen können:

Abrechnung für die HERE Maps API#
Einleitung#
Wird in Stella die HERE Maps API (https://account.here.com/) benutzt, ist es ratsam, die sogenannte Billing API einzurichten, um Informationen zur Nutzung zu ermitteln.
Einrichtung#
Rufen Sie die HERE Maps API Seite auf (https://platform.here.com/portal/) und loggen Sie sich ein bzw. melden Sie sich an. Klicken Sie den Launcher (das Hamburgermenü oben rechts) und klicken Sie auf Access Manager.
Hier muss eine neue App eingerichtet werden. Diese erhält dann eine eindeutige ID. In der Regel geschieht dies pro Mandant bzw. Kunde. Wechseln Sie auf die Detailansicht der App. Dort finden Sie erneut die App ID (Zeile oben unter dem Icon).
Erstellen Sie hier einen neuen API Key Create API Key. Es können beliebig viele API Keys generiert werden.
Für die Nutzung wird ein OAuth Token benötigt. Dieser wird später live ermittelt, erfordert dafür aber ebenfalls ein ID/Key Paar. Wechseln Sie in den App Details auf OAuth 2.0 in der Navigation links. Klicken Sie auf Create credentials. Im Dialog sehen Sie sowohl die Access Key ID als auch das Access Key Secret. Notieren Sie sich beide oder laden Sie diese Daten als .properties-Datei herunter. Das Secret kann später nicht mehr angezeigt werden. Es können bis zu 2 OAuth Credentials erzeugt werden.

Klicken Sie im Launcher nun auf Usage. Auf dieser Seite erhalten Sie die Organization ID, die in der Stella Helper Konfiguration als "HERE Maps Realm ID" bezeichnet wird. Die ID beginnt mit org.
Es werden folgende Daten benötigt, um diese in die Stella Helper Konfiguration einzutragen:
| Stella Helper App | HERE Maps Daten |
|---|---|
| HERE Maps Realm ID | Organization ID |
| HERE Maps API URL Locate | fester Wert, https://geocode.search.hereapi.com/v1/geocode |
| HERE Maps API URL Discover | fester Wert, https://discover.search.hereapi.com/v1/discover |
| HERE Maps URL OAuth | fester Wert, https://account.api.here.com/oauth2/token |
| HERE Maps App ID | App ID |
| HERE Maps API Key | API Key |
| HERE Maps ID | Access Key ID |
| HERE Maps Secret | Access Key Secret |
Nutzung abfragen#
Best practise ist die Nutzung eines periodischen Scripts in Stella. Dies ist ein Beispiel:
var Billing = {
URL: API.getConfigValue("helper", "URL"),
USERNAME: API.getConfigValue("helper", "Domino Username"),
PASSWORD: API.getConfigValue("helper", "Domino Password"),
pullData: function(){
var result = API.rest(this.URL + '/billingHereMaps', this.USERNAME, this.PASSWORD);
API.log().forceToBackend().info(result);
}
}
Billing.pullData();
Sinn und Zweck ist es, dieses Script mindestens 1x täglich laufen zu lassen. Das sammelt alle Daten zum aktuellen Monat. Möchte man explizit einen anderen Monat/ein anderes Jahr einlesen, so kann dies mit den URL Parametern in dieser Form erfolgen:
http://localhost/Stella/helper.nsf/index.xsp/billingConvertAPI?month=10&year=2023
Die Reihenfolge der Parameter spielt dabei keine Rolle.
Daten sichten#
Die Stella Helper App enthält eine Übersichtsseite (billing_heremaps.xsp), die sie im Browser öffnen können:

Konfigurator
Stella Konfigurator#
Mit dem Konfigurator ist das Bearbeiten von bestimmten Elementen (Configs, Keywords, Textblöcken, Word Vorlagen und Workflows) möglich.
Voraussetzungen#
Um den Konfigurator nutzen zu können, müssen im Vorfeld einige Angaben in der Anwendungs-Konfiguration gemacht werden.

| Feld | Beschreibung |
|---|---|
| Domino Server | Der Domino Server, auf dem der Konfigurator liegt, i.d.R. vorgegeben mit dem aktuellen Server |
| Aveedo Server | Der Domino Server, auf dem die Aveedo Instanz liegt |
| Aveedo Dateipfad | Pfad zur Aveedo-Instanz |
| Aveedo URL | Die Adresse der Aveedo-Instanz für den Browserzugriff |
| Hilfs-App Server | Der Server, auf dem die Stella Hilfsanwendung läuft |
| Hilfs-App Dateipfad | Pfad zur Stella Hilfsanwendung |
| Log Level | Das Log-Level |
| Entferne logs nach n Tagen | Automatisches entfernen von Logs nach Tagen |
| Log Level für Benachrichtigungen | Das Log Level, welches Benachrichtigung verschickt |
| Benachrichtigungsadresse | Die E-Mail Adresse wo die Benachrichtigungen hin verschickt werden |
| Anwendung | Die Anwendung, die konfiguriert werden soll |
Des weiteren müssen die Elemente in Aveedo die Option "User Editable" und "User Deletable" bekommen, je nach dem ob die Elemente, vom Konfigurator, nur bearbeitet oder auch gelöscht werden können.

Konfigurator#
Im Konfigurator sieht man folgende Übersicht:

Die Darstellung der Konfigurationselemente, Schlüsselwörter, Textblöcke und Word-Vorlagen ist weitgehend einheitlich. Alle Elemente sind nach Kategorien gruppiert. In den Zeilen werden der Titel, ein Kommentar, das Datum der letzten Änderung sowie der Bearbeiter angezeigt. Zusätzlich weisen Symbole auf zwei Eigenschaften hin:
- Schlosssymbol: Das Element ist in Aveedo gegen ein Überschreiben beim Import geschützt.
- Aveedo-Symbol: Das Element wurde in Aveedo erstellt; bestimmte Eigenschaften können daher nicht bearbeitet werden.
Bei den Konfigurationselementen wird zusätzlich der Inhalt direkt in der Liste angezeigt. Schlüsselwörter zeigen zudem die zugehörige Maske an, sofern diese nicht auf "Standard" gesetzt ist.
Word-Vorlagen sind keiner Kategorie zugeordnet.
Workflows hingegen bestehen lediglich aus einem Titel, den Symbolen, dem letzten Bearbeiter und dem Zeitpunkt der letzten Bearbeitung.
Um ein Element zu öffnen, muss auf den Titel geklickt werden.
Im Folgenden werden alle Elemente einzeln erläutert.
Das Konfigurations Element#

Konfigurationen dienen dazu, häufig verwendete, statische Namen, Pfade oder Texte in Formularen und Feldern als „Einstellungen“ zu definieren.
Bei den Konfigurationen können der Titel, der Kommentar sowie der Inhalt bearbeitet werden. Die Instanz und die Kategorie werden lediglich zu Informationszwecken angezeigt und sind nicht veränderbar.
| Feld | Beschreibung |
|---|---|
| Titel | Ein benutzerdefinierter Name zur Identifizierung |
| Kommentar | Ein Kommentar, um das Element zu beschreiben |
| Inhalt | Der Inhalt des Konfigurations Elements |
| Instanz | Die Instanz in welcher dieses Element steckt(global,Application oder Instanz) |
| Kategorie | Die Kategorie in welcher man dieses Element findet |
Die Schlüsselwörter#

Schlüsselwörter ähneln den Konfigurationen, sind jedoch die einzigen Elemente, die in Feldern – beispielsweise in Dropdown-Menüs – verwendet werden können.
Bei den Schlüsselwörtern können der Titel, der deutsche Titel, der Alias sowie der Kommentar bearbeitet werden. Die Instanz und die Kategorie dienen lediglich zur Information und sind nicht veränderbar. Zusätzlich können neue Schlüsselwörter angelegt werden.
| Feld | Beschreibung |
|---|---|
| Titel | Ein benutzerdefinierter Name zur Identifizierung in Englisch |
| Deutscher Titel | Ein benutzerdefinierter Name zur Identifizierung in Deutsch |
| Alias | Der Alias unter welchem das Schlüsselwort gefunden wird |
| Alias aktualisieren | Aktiviert ein Backendscript welches alle Vorkommen des Alias umändert(sollte beim ändern des Alias aktiviert werden) |
| Kommentar | Ein Kommentar, um das Element zu beschreiben |
| Instanz | Die Instanz in welcher dieses Element steckt(global,Application oder Instanz) |
| Kategorie | Die Kategorie in welcher man dieses Element findet |
| Maske | Die Maske in welcher sich das Schlüsselwort befindet |
Die Textblöcke#

Ein Textblock ist ein Richtext-/MIME-Element, das als vordefinierter Text in ein Feld eingebunden werden kann.
Bei den Textblöcken können der Titel, der Kommentar sowie der Inhalt bearbeitet werden. Die Instanz und die Kategorie dienen lediglich zur Information und sind nicht veränderbar. Zusätzlich können neue Textblöcke angelegt werden.
| Feld | Beschreibung |
|---|---|
| Titel | Ein benutzerdefinierter Name zur Identifizierung |
| Kommentar | Ein Kommentar, um das Element zu beschreiben |
| Inhalt | Der Inhalt des Textblockes |
| Instanz | Die Instanz in welcher dieses Element steckt(global,Application oder Instanz) |
| Kategorie | Die Kategorie in welcher man dieses Element findet |
Die Word-Vorlagen#

Eine Word-Vorlage dient dazu, ein Word-Dokument zu exportieren, das mit bestimmten Daten befüllt wird.
In der Word-Vorlage kann ausschließlich das Word-Dokument ausgetauscht werden. Dabei ist darauf zu achten, ausschließlich die unten aufgeführten Platzhalter zu verwenden.
| Feld | Beschreibung |
|---|---|
| Titel | Ein benutzerdefinierter Name zur Identifizierung |
| Kommentar | Ein Kommentar, um das Element zu beschreiben |
| Word Vorlage(Referenz) | Eine Vorlage um das Original anzuschauen |
| Word Vorlage | Das Word Dokument das als Worlage dient |
| Platzhalter | Die Platzhalter die im Worddokument verbaut sind |
Der Workflow#

Beim Öffnen eines Workflows wird der Editor angezeigt, wie im obenstehenden Bild dargestellt.
Dort stehen mehrere Bearbeitungsmöglichkeiten zur Verfügung.
Eigenschaften#
Beim Klick auf die Schaltfläche „Eigenschaften“ öffnet sich ein Eigenschaftsfenster am rechten Rand des Editors.

Die Eigenschaften sind in zwei Sektionen unterteilt: Globale Rechte und Kommunikation.
Die Sektion „Globale Rechte“ enthält die folgenden Felder:
- Globale Autoren: Legt fest, welche Benutzer den Workflow bearbeiten dürfen.
- Globale Leser: Bestimmt, welche Benutzer den Workflow einsehen dürfen.
Eine zusätzliche Checkbox ermöglicht es, dem Ersteller automatisch Leserechte zuzuweisen. In der Sektion „Kommunikation“ werden die Einstellungen für den E-Mail-Versand konfiguriert:
- Standardabsender: Die E-Mail-Adresse, die als Absender beim Versand verwendet wird.
- Signatur: Der Text, der als Fußzeile jeder E-Mail automatisch angehängt wird.
- Schriftgröße und Schriftart: Definieren das Erscheinungsbild der E-Mails und sind selbsterklärend.
Knoten#
Beim Klick auf einen Start-, End- oder Aufgabenknoten öffnet sich das zugehörige Eigenschaftsfenster.
Dieses ist in drei Sektionen unterteilt:
- Eintritts-Benachrichtigung: Benachrichtigungen, die versendet werden, wenn ein Dokument in diese Phase des Workflows eintritt.
- Austritts-Benachrichtigung: Benachrichtigungen, die beim Verlassen der Phase durch ein Dokument versendet werden.
- Eskalation: Hier wird konfiguriert, ab welchem Zeitraum und in welchen Intervallen eine Benachrichtigung versendet wird, wenn sich ein Dokument weiterhin in dieser Phase befindet.
Benachrichtigungen#

Die Eintritts- und Austritts-Benachrichtigungen sind optisch identisch aufgebaut.
Bei den Benachrichtigungen kann festgelegt werden, wer die Nachricht erhalten soll. Standardmäßig ist die Einstellung auf Ersteller gesetzt.
- Wird Feld ausgewählt, erscheint ein Dropdown-Menü, in dem ein Feld des zugeordneten Objekts ausgewählt werden kann.
- Bei Auswahl von Benutzer öffnet sich ein Feld zur Personenauswahl, in dem eine oder mehrere Personen ausgewählt werden können.
- Bei Auswahl von Profil erscheint ein Dropdown-Menü mit Funktionsprofilen, von denen eines ausgewählt werden kann.
Die letzten drei Optionen sind selbsterklärend.
Unterhalb dieser Einstellungen befindet sich ein optionales Feld „Absender“, das den Absender der Nachricht für diesen Knoten ersetzt und die globale Absender-Eigenschaft überschreibt. Die Felder „Betreff“ und „Inhalt“ entsprechen den üblichen Feldern einer E-Mail. Dabei können auch Platzhalter verwendet werden.
Eskalation#

Die Eskalation verfügt über einen Titel und darunter befindet sich eine Checkbox zur Aktivierung bzw. Deaktivierung. Anschließend kann der Zeitpunkt der Eskalation ausgewählt werden.
Es gibt drei Modi:
- Interval: Löst eine wiederkehrende Eskalation aus, bei der der Abstand der Auslösung festgelegt werden kann.
- Einmalig: Die Eskalation wird nur einmalig ausgelöst.
- Täglich: Entspricht dem Intervall-Modus, wobei der Abstand fest auf einen Tag gesetzt ist.
Jeder der drei Modi verfügt über eine Einstellung, die definiert, nach welcher Zeit die erste Eskalation erfolgt.
Der Modus Täglich besitzt zusätzlich einen Maximalwert, der angibt, wie oft die Eskalation insgesamt ausgelöst wird, sowie eine Checkbox, mit der Wochenenden vom Eskalationszeitraum ausgeschlossen werden können.
Im Modus Interval steht außerdem ein Feld zur Verfügung, in dem der Intervall-Abstand definiert wird.
Die Eskalations-Benachrichtigung funktioniert analog zu den allgemeinen Benachrichtigungen.