Laufender Betrieb Zeitsteuerung, Protokoll, Makros, config.json, Systemaufgaben und häufige Fragen. Zeitsteuerung der Module (allgemein) Jedes Modul bringt Aufgaben mit, die in Abständen laufen — Artikel exportieren, Bestellungen holen, Mails ablegen. Verwaltet werden sie in der Zeitsteuerung. Diese Seite beschreibt, was für alle Module gilt; welche Aufgaben es gibt, steht im Handbuch des jeweiligen Moduls. Die Tabelle Spalte Inhalt Timer Name der Aufgabe, gruppiert nach Bereich letzte Ausführung Uhrzeit, oder läuft… bzw. warten… nächste Ausführung Uhrzeit des nächsten Starts Intervall der eingestellte Abstand ▶ startet die Aufgabe sofort Kategorie Untergruppe der Aufgabe Über Aktualisieren wird die Ansicht neu geladen; sie aktualisiert sich außerdem selbst. Steht in der Spalte Intervall 00:00:00, ist die Aufgabe nicht eingeplant. Sie läuft dann nur, wenn sie von Hand gestartet wird. Intervall einstellen Ein Klick auf die Uhrzeit in der Spalte Intervall öffnet die Eingabe. Eingegeben wird eine Zeitspanne in Stunden : Minuten : Sekunden. Eingabe Bedeutung mit Feste Zeit 00:15:00 alle 15 Minuten täglich 0:15 Uhr 01:00:00 jede Stunde täglich 1:00 Uhr 05:00:00 alle 5 Stunden täglich 5:00 Uhr Feste Zeit Ohne den Haken ist die Angabe ein Abstand, mit dem Haken eine Uhrzeit. Für große Läufe — ein Vollexport aller Artikel — ist die feste Zeit der richtige Weg: einmal nachts, statt tagsüber alle paar Stunden. Parallel ausführen Normalerweise läuft immer nur eine Aufgabe. Ist eine andere aktiv, wartet die nächste und zeigt warten…, bis sie an die Reihe kommt. Mit dem Haken Parallel ausführen überspringt eine Aufgabe dieses Warten und läuft gleichzeitig mit anderen. Das ist Absicht und keine Einschränkung: Zwei Läufe, die dieselben Artikel schreiben, würden sich ins Gehege kommen. Die Warteschlange verhindert das. Parallel gehört nur dort eingeschaltet, wo eine Aufgabe kurz ist und andere Daten anfasst — etwa der Abruf von Bestellungen, während nachts Artikel exportiert werden. Bei zwei Läufen auf denselben Daten führt es zu Fehlern, die schwer zu deuten sind. Die Symbole Symbol Bedeutung Pfeil im Kreis Abstand Uhr feste Zeit Unendlich-Zeichen parallel Zeitsteuerung ein- und ausschalten Der Haken Aktiv in der Überschrift gilt für alle Module dieser Installation. Ausgeschaltet läuft keine Aufgabe mehr — und Änderungen an den Intervallen sind gesperrt. Das ist der Schalter für Wartungsarbeiten, nicht für den Dauerbetrieb. Ein Start über ▶ funktioniert trotzdem. Manuelle Läufe sind von Aktiv und vom Zeitfenster nicht betroffen. Zeitfenster: Von und Bis Neben Aktiv stehen zwei Felder, Von und Bis. Sind sie gefüllt, laufen die geplanten Aufgaben nur innerhalb dieser Zeitspanne. Damit lässt sich der Betrieb auf die Geschäftszeiten begrenzen — oder umgekehrt aus ihnen heraushalten, wenn die Datenbank tagsüber für die SelectLine frei bleiben soll. Ein Fenster über Mitternacht wirkt nicht. Bei Von 22:00 und Bis 06:00 wird die Einschränkung übergangen und alle Aufgaben laufen wie ohne Fenster. Für nachts gehört das Fenster deshalb innerhalb eines Tages angegeben, etwa Von 00:00 Bis 06:00. Die Felder erscheinen nur in der Zeitsteuerung unter SelectLine. Das Fenster gilt aber für alle Module. Von Hand starten Die Schaltfläche ▶ startet eine Aufgabe sofort — unabhängig von Intervall, Aktiv und Zeitfenster. Während sie läuft, ist sie ausgegraut. Der manuelle Start umgeht auch die Warteschlange. Zwei große Läufe gehören deshalb nicht gleichzeitig von Hand gestartet. Welche Daten eine Aufgabe berücksichtigt Das hängt von der Aufgabe ab. Grob gilt: Art der Aufgabe Berücksichtigt Stammdaten synchronisieren, Extratabellen exportieren, Artikelgruppen exportieren, Bestand komplett, Kunden exportieren alle Datensätze der betroffenen Tabellen geänderte Artikel exportieren, Preise exportieren, Bestand geändert, Status exportieren Datensätze, die seit dem Start des letzten Laufs geändert wurden ein einzelner Artikel zu diesem Artikel alles: Daten, Preis, Bestand, Bilder XDATZUORD exportieren geänderte Datensätze, deren Datei im Pfad vorhanden ist Bei XDATZUORD gilt zusätzlich: Fehlt die im Datensatz genannte Datei, wird der Datensatz übersprungen. Mehrfach genannte Dateien werden nur einmal übertragen. Die Erkennung geänderter Datensätze stützt sich auf geändert am. Änderungen, die dieses Feld nicht setzen — etwa direkte Eingriffe in die Datenbank —, werden von den Änderungsläufen nicht erfasst. Dann hilft nur ein Vollauf. Status und Meldungen Unter der Tabelle stehen die aktuellen Meldungen des laufenden Betriebs. Das vollständige Protokoll steht unter Log Informationen. Systemaufgaben Neben den Modulaufgaben laufen eigene Aufgaben der Anwendung mit. Siehe Wartung und Systemaufgaben. Nächster Schritt Log Informationen Log Informationen Das Protokoll ist die erste Stelle, an der man nachsieht, wenn etwas nicht wie erwartet funktioniert. Jede Übertragung, jeder Fehler und jeder Start hinterlässt dort eine Zeile. Wo es zu finden ist Über die Schaltfläche rechts oben in der Oberfläche. Was angezeigt wird Die letzten 10.000 Einträge der letzten 24 Stunden. Ältere Einträge stehen im Download. Spalte Inhalt Typ DEBUG, INFO, WARN oder ERROR Datum Zeitpunkt Nachricht der Text; ein Klick auf die Zeile zeigt sie vollständig Lange Meldungen sind gekürzt. Ein Klick auf die Zeile klappt sie auf — dort steht auch, aus welchem Bereich der Anwendung sie stammt. Die vier Typen Typ Bedeutung Handlungsbedarf DEBUG Einzelschritte, für die Fehlersuche keiner INFO normaler Ablauf: Start, Ende, Anzahl keiner WARN etwas wurde übersprungen oder ersetzt gelegentlich ansehen ERROR etwas ist nicht durchgelaufen ansehen Einzelne ERROR-Zeilen bedeuten nicht, dass ein Lauf insgesamt gescheitert ist — meist betrifft es einen Datensatz. Der Lauf gilt trotzdem als beendet. Der Abschluss allein sagt also nicht, dass alles angekommen ist. Suchen und filtern Feld Wirkung Suche Volltextsuche über die Meldungen Typ zeigt nur INFO, DEBUG, WARN oder ERROR Der schnellste Weg zur Ursache: auf ERROR filtern und von der ältesten Meldung nach vorne lesen. Der erste Fehler nennt die Ursache — die folgenden sind oft nur Folgefehler. Zu jeder Zeile steht der Zusammenhang Zu jeder Meldung wird vermerkt, aus welchem Aufruf sie stammt, welcher Pfad betroffen war und welcher Benutzer beteiligt war. Damit lässt sich ein Vorgang zusammenhängend nachlesen, statt einzelne Zeilen zusammenzusuchen — besonders wenn mehrere Module gleichzeitig protokollieren. Das vollständige Protokoll herunterladen Die Schaltfläche mit dem Pfeil lädt das gesamte Protokoll als ZIP-Datei herunter. Das ist die Datei, die der DAKO-Support braucht. Sie enthält deutlich mehr als die Ansicht — auch die DEBUG-Zeilen und die älteren Tage. Im Protokoll stehen Datensatznummern, Mailadressen und Namen aus dem Mandanten. Beim Weitergeben ist das zu berücksichtigen. Wie lange die Dateien vorgehalten werden Die Protokolldateien liegen im Ordner log der Installation. Es werden die letzten 10 Dateien behalten; ältere werden gelöscht. Bei einer sehr gesprächigen Installation deckt das nur wenige Tage ab. Wenn ein Fehler beobachtet werden soll, der nur selten auftritt, gehört das Protokoll deshalb zeitnah heruntergeladen. Fehler per E-Mail Fehler gehen zusätzlich per E-Mail heraus, wenn der Mailversand eingerichtet ist. Das ist der Grund, den Mailversand einzurichten: Ohne ihn sieht niemand von selbst ins Protokoll — und eine Störung fällt erst auf, wenn ein Anwender sie meldet. Siehe E-Mail-Versand. Nächster Schritt Makros Makros Mit Makros lassen sich Daten vor oder nach einer Übertragung noch verändern — ohne Anpassung der Schnittstelle. Geschrieben werden sie in der SelectLine, eingetragen in FINN.ghost. Das ist der vorgesehene Weg für Sonderfälle: Ein Feld soll anders gefüllt, ein Text ergänzt, eine Auswahl anders getroffen werden. Was sich mit einem Makro lösen lässt, braucht keine Programmierung. Wo die Felder stehen In den Einstellungen der Module gibt es den Punkt Makro. Welche Makros ein Modul anbietet, steht im Handbuch des Moduls. Was eingetragen wird Der Dateiname, den die SelectLine dem Makro automatisch gibt — nicht seine Bezeichnung. Das ist die häufigste Verwechslung: In der SelectLine ist die Bezeichnung sichtbar, gebraucht wird aber der Dateiname. Trägt man die Bezeichnung ein, wird das Makro nicht gefunden — und meist ohne auffällige Meldung übergangen. Die Parameter müssen passen Steht der Eingabecursor im Feld, zeigt FINN.ghost die Parameter, die das Makro erwartet. Diese müssen im Makro gleichlautend vorhanden sein. Weicht ein Parametername ab, läuft das Makro nicht. Die Parameter sind die vereinbarte Schnittstelle zwischen FINN.ghost und dem Makro — sie gehören zeichengenau übernommen. Was zu bedenken ist Ein Makro läuft bei jedem betroffenen Datensatz. Bei einem Vollexport mit zehntausenden Artikeln entscheidet seine Laufzeit über die Dauer des Laufs — ein Makro, das eine Sekunde braucht, verlängert den Export um Stunden. Makros werden in der SelectLine ausgeführt und können dort schreiben. Vor dem Einsatz in einem echten Mandanten gehören sie in einem Testmandanten geprüft. Wenn ein Makro nicht greift Ursache Abhilfe Bezeichnung statt Dateiname eingetragen Dateiname aus der SelectLine übernehmen Parametername weicht ab im Makro anpassen Makro liegt im falschen Mandanten im richtigen Mandanten anlegen Makro läuft, wirkt aber nicht prüfen, ob es vor oder nach der Übertragung greift Meldungen dazu stehen im Protokoll. Siehe Log Informationen. Nächster Schritt Anpassungen über die config.json Anpassungen über die config.json Alle Einstellungen von FINN.ghost stehen in einer Datei: der config.json im Installationsordner. Fast alles darin wird über die Oberfläche gepflegt — für einige Sonderfälle gibt es keine Maske. Diese Datei enthält die gesamte Konfiguration einschließlich der verschlüsselten Kennwörter. Änderungen von Hand nur mit angehaltenem Dienst und nur mit einer Kopie der bisherigen Datei — eine ungültige Datei verhindert den Start. Wo sie liegt C:\DAKO\SelectLine.ghost\config.json Der Pfad richtet sich nach dem gewählten Installationsordner. Beim Update wird nicht überschrieben Kennwortfelder werden verschlüsselt gespeichert config.json.tmp Sicherheitskopie Die Sicherheitskopie Im gleichen Verzeichnis liegt config.json.tmp. Sie wird stündlich von der Systemaufgabe Backup Config geschrieben. Sie ist damit der Stand der letzten vollen Stunde — nicht der Stand unmittelbar vor der letzten Änderung. Wer eine Einstellung zurücknehmen will, findet dort den Stand von vorher nur, wenn seit der letzten Sicherung noch nichts geändert wurde. Vor größeren Änderungen deshalb selbst eine Kopie anlegen und mit Datum benennen. Das kostet nichts und erspart im Zweifel viel. Siehe Wartung und Systemaufgaben. Vorgehen bei Änderungen von Hand Windows-Dienst SL_ anhalten. Kopie der config.json anlegen. Ändern und die Datei als gültiges JSON speichern. Dienst starten. Im Protokoll prüfen, dass er gestartet ist. Wird bei laufendem Dienst geändert, geht die Änderung verloren: Die Anwendung hält die Einstellungen im Speicher und schreibt die Datei beim nächsten Speichern komplett neu. Dateien im Dateisystem ablegen Standardmäßig legt FINN.ghost die Dateien von Journalen in der Datenbank ab. Sollen sie stattdessen im Dateisystem liegen, wird der Pfad zum SYSTEM-Ordner der SelectLine hinterlegt: { "systemPath": "\\sql03\SelectLineSQL2022_SRV\SYSTEM" } Läuft FINN.ghost nicht auf demselben System wie die SelectLine, muss es ein Netzwerkpfad sein. Im JSON werden Backslashes doppelt geschrieben — \ statt \. Der Benutzer, unter dem der Windows-Dienst läuft, braucht Schreibrechte auf diesen Pfad. Läuft der Dienst als lokales Systemkonto, hat er auf einem Netzwerkpfad in der Regel keine Rechte — dann gehört dem Dienst ein Domänenkonto zugewiesen. Datenbank oder Dateisystem Datenbank (Standard) Dateisystem In der Datensicherung enthalten nur wenn der Ordner mitgesichert wird Größe der Datenbank wächst mit den Dateien bleibt klein Zugriff nur über die SelectLine auch direkt im Ordner Bei FINN.mail2SL lohnt die Überlegung: Dort entsteht je abgelegter Mail eine Datei. Über Jahre summiert sich das in der Datenbank deutlich. Einstellungen, die es nur hier gibt Ein Teil der Einstellungen hat keine Maske: eigene Abfragen für die Bestandsermittlung, Zuordnungen einzelner Felder und Sonderfälle der einzelnen Module. Welche das sind und was sie bewirken, steht im Kapitel Einstellungen ohne Maske. Was hier nicht geändert werden sollte Alles, wofür es eine Maske gibt, gehört über die Oberfläche geändert — dort werden Werte geprüft, Kennwörter verschlüsselt und nötige Neustarts ausgelöst. Der direkte Eingriff ist für die Fälle gedacht, die keine Maske haben. Eine Ausnahme ist der Notfall: Hat man sich durch die eingeschaltete Benutzeranmeldung ausgesperrt, lässt sie sich hier zurücksetzen. Siehe Server und Oberfläche. Nächster Schritt Wartung und Systemaufgaben Wartung und Systemaufgaben Neben den Aufgaben der Module laufen eigene Aufgaben der Anwendung. Sie stehen in der Zeitsteuerung unter der Kategorie System. Die Systemaufgaben Aufgabe Abstand Was sie tut Backup Config stündlich schreibt config.json.tmp und meldet den Stand der Installation an DAKO-IT MSSQL-Log aufräumen eingeplant verkleinert das Transaktionsprotokoll der Datenbank SSL Zertifikat erneuern alle 12 Stunden erneuert das Let's-Encrypt-Zertifikat, wenn es nötig ist Dazu je Modul dessen eigene Aufgaben. Siehe Zeitsteuerung der Module (allgemein). MSSQL-Log aufräumen Diese Aufgabe verkleinert das Transaktionsprotokoll der Mandantendatenbank. Dazu stellt sie das Wiederherstellungsmodell kurzzeitig auf Einfach, verkleinert die Protokolldatei und stellt das Modell wieder auf Vollständig. Der Grund ist praktischer Natur: Massenläufe wie ein Artikelvollexport lassen das Transaktionsprotokoll stark anwachsen. Ohne Verkleinerung läuft die Platte über. Der Wechsel des Wiederherstellungsmodells unterbricht die Kette der Protokollsicherungen. Wer die SelectLine-Datenbank mit Transaktionsprotokollsicherungen sichert, muss danach eine neue Vollsicherung anstoßen — sonst ist eine zeitpunktgenaue Wiederherstellung nicht mehr möglich. Diese Aufgabe gehört deshalb mit dem Datenbankverantwortlichen abgestimmt. Wird die Datenbank ohnehin im Modell Einfach betrieben — bei SelectLine-Installationen verbreitet —, ist das ohne Bedeutung. Was stündlich an DAKO-IT gemeldet wird Die Aufgabe Backup Config meldet zusammen mit der Sicherung den Stand der Installation an einen Dienst von DAKO-IT. Übertragen werden: Angabe Wozu Lizenzschlüssel Prüfung, ob die Lizenz noch gültig ist Firmenname aus der SelectLine-Lizenz Zuordnung zum Kunden Mandant Zuordnung der Installation Version der SelectLine Unterstützung und Fehlersuche Version von FINN.ghost Hinweis auf verfügbare Updates Installationspfad und Rechnername Unterscheidung mehrerer Installationen Es werden keine Belege, Adressen oder Artikel übertragen — nur die genannten Angaben zur Installation. Meldet der Dienst die Lizenz als abgelaufen, wird der Lizenzschlüssel geleert und die Anwendung beendet sich. Sie startet danach ohne Module. Bei einer auslaufenden Lizenz gehört die Verlängerung deshalb rechtzeitig geklärt. Ohne ausgehende Internetverbindung schlägt diese Meldung fehl. Das ist für den Betrieb unkritisch — im Protokoll erscheint dann aber regelmäßig ein Fehler. Was in die Datensicherung gehört Was Warum config.json die gesamte Konfiguration Ordner data\ssl Zertifikat, Schlüssel und Let's-Encrypt-Zugang Ordner client\plugins eigene Erweiterungen, falls vorhanden Datenbank des Mandanten dort liegen die Daten der Module Mit config.json und data\ssl ist eine Installation nach einem Serverausfall in wenigen Minuten wiederhergestellt: Setup ausführen, beides zurückkopieren, Dienst starten. Das Programm selbst braucht nicht gesichert zu werden — das Setup lässt sich jederzeit neu herunterladen. Siehe Installation und Update. Regelmäßig nachsehen Wie oft Was täglich die Fehlermails, sofern eingerichtet wöchentlich Protokoll auf wiederkehrende ERROR-Meldungen monatlich läuft eine aktuelle Version? monatlich Restlaufzeit des Zertifikats jährlich Ablaufdatum von Clientschlüsseln bei Microsoft 365 Der letzte Punkt fällt in der Praxis am häufigsten auf: Clientschlüssel in Azure laufen nach ein bis zwei Jahren ab. Danach steht der Mailversand — und damit auch die Benachrichtigung, die darauf hinweisen würde. Siehe E-Mail über Microsoft 365. Nächster Schritt Häufige Fragen Häufige Fragen Wo läuft FINN.ghost? Als Windows-Dienst auf einem Server im Haus. Bedient wird es im Browser. Siehe Überblick. Braucht FINN.ghost eine eigene Datenbank? Nein. Was gespeichert werden muss, legt es in eigenen Tabellen im SelectLine-Mandanten ab. Deshalb braucht der SQL-Benutzer das Recht, Tabellen anzulegen. Siehe Datenbank. Warum werden Datenbank und API gebraucht? Gelesen wird direkt aus der Datenbank, weil das bei großen Mengen um ein Vielfaches schneller ist. Geschrieben wird über die API, damit Nummernkreise, Preisfindung und Buchungen der SelectLine gelten. Siehe SelectLine-API. Können mehrere FINN.ghost auf einem Server laufen? Ja. Jede Installation braucht einen eigenen Ordner und einen eigenen Port. Der Ordnername wird zum Dienstnamen — sprechende Namen erleichtern die Unterscheidung. Siehe Installation und Update. Können mehrere Mandanten mit einer Installation bedient werden? Nein. Eine Installation arbeitet auf einer Mandantendatenbank. Für einen zweiten Mandanten braucht es eine zweite Installation. Siehe Datenbank. Wie aktualisiere ich? In der Oberfläche Strg + Alt + U. Alternativ das Setup über denselben Ordner ausführen. Siehe Installation und Update. Bleiben die Einstellungen beim Update erhalten? Ja, die config.json wird nicht überschrieben. Siehe Anpassungen über die config.json. Warum warnt der Browser vor der Verbindung? Weil das Zertifikat nicht anerkannt wird. Mit öffentlicher Domain löst das Let's Encrypt, ohne Domain das Verteilen des Stammzertifikats an die Arbeitsplätze — siehe Zertifikat einrichten. Muss FINN.ghost aus dem Internet erreichbar sein? Für Let's Encrypt nicht — der Nachweis läuft über einen DNS-Eintrag. Einzelne Module brauchen aber eingehende Verbindungen, etwa für Rückmeldungen eines Shops. Das steht im jeweiligen Modulhandbuch. Warum fehlt ein Modul im Menü? Weil die Lizenz es nicht enthält oder nach dem Speichern noch nicht neu gestartet wurde. Siehe Lizenz und Module. Eine Aufgabe steht auf „warten…" — ist das ein Fehler? Nein. Es läuft gerade eine andere Aufgabe; es wird immer nur eine ausgeführt. Siehe Zeitsteuerung der Module (allgemein). Warum läuft nachts alles, obwohl ich ein Zeitfenster gesetzt habe? Weil ein Fenster über Mitternacht nicht wirkt. Von 22:00 Bis 06:00 wird übergangen. Das Fenster muss innerhalb eines Tages liegen. Siehe Zeitsteuerung der Module (allgemein). Ein Lauf ist beendet — sind damit alle Daten übertragen? Nicht zwangsläufig. Einzelne Datensätze können gescheitert sein; der Lauf gilt trotzdem als beendet. Sicherheit gibt nur das Protokoll. Siehe Log Informationen. Wie lange bleiben Protokolle erhalten? Die Ansicht zeigt 24 Stunden, auf der Platte liegen die letzten 10 Protokolldateien. Wer mehr braucht, lädt das Protokoll als ZIP herunter. Siehe Log Informationen. Was braucht der Support von mir? Das Protokoll als ZIP, die Version aus der Fußzeile und eine Beschreibung, welcher Vorgang betroffen ist. Siehe Log Informationen. Der Mailversand läuft nicht mehr, ohne dass sich etwas geändert hat. Meist ist ein Clientschlüssel in Azure abgelaufen. Siehe E-Mail über Microsoft 365. Wer darf die Oberfläche öffnen? Ohne eingeschaltete Benutzeranmeldung jeder, der den Server im Netz erreicht. Für alles außerhalb von localhost gehört sie eingeschaltet. Siehe Server und Oberfläche. Kann ich FINN.ghost in der SelectLine anzeigen? Ja, die Oberfläche lässt sich in den SelectLine-Dashboards einbinden. Die Anwender bleiben dann in der SelectLine. Wie entferne ich eine Installation? Dienst anhalten und entfernen, Ordner löschen. Vorher die config.json sichern. Siehe Installation und Update. Wo steht, was sich geändert hat? Im Änderungsverlauf — und auf der Startseite der Anwendung.