Easyjob-Synchronisation

Aus CrewBrain Wiki
Version vom 15. September 2023, 12:32 Uhr von Sven (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Für Kunden der Software "Easyjob" (https://www.protonic-software.com/de/home/) bietet CrewBrain eine automatisierte Schnittstelle, über die Auftragsdaten automatisch nach CrewBrain übertragen werden können. Zudem bietet auch die Firma Mines-Service (https://www.minesservice.de/minesmodules-crewbrain-api) eine Schnittstelle zwischen Easyjob und CrewBrain an.

Unterschiede zwischen der internen Synchronisation und der Synchronisation von Mines Service

Die Synchronisationslogik von Mines-Service greift direkt auf die Easyjob-Datenbank zu und hat dadurch Zugriff zu allen Daten aus Easyjob. Unsere interne Synchronisationslogik greift dagegen auf die Easyjob-API zu und bietet daher nur einen Teil der Optionen und Zugriffsmöglichkeiten im Vergleich zur Integration von Mines-Service. Für große Installationen ist in der Regel die Synchronisation von Mines Service vorzuziehen, bei kleineren Easyjob-Installationen reicht oftmals auch unsere interne Synchronisationslogik aus.

Im folgenden behandelt dieser Wiki-Artikel unsere interne Synchronisationslogik mit Easyjob (im System als "Easyjob Direct" bezeichnet.

Synchronisation aktivieren

Um die Synchronisation zu aktivieren ist zunächst die Angabe der URL notwendig, unter der die Easyjob-Instanz erreichbar ist. Anschließend kann sich ein Benutzer mit seinen Easyjob-Zugangsdaten anmelden. Es kann sinnvoll sein, hierfür einen technischen Benutzer anzulegen, dieser sollte über volle Zugriffsrechte für Projekte aller Standorte verfügen, da in der Easyjob-API derzeit nicht nach Standort gefiltert werden kann.

Zugriff auf lokale Easyjob-Server

Easyjob wird üblicherweise lokal gehostet. Damit CrewBrain auf die Daten in Easyjob zugreifen kann ist es daher notwendig, dass der Server von außen per URL oder IP erreichbar ist. Hierfür sind in der Regel Firewall-Freischaltungen und Port-Weiterleitungen im lokalen Netzwerk notwendig. Erst wenn der Zugriff auf die API von außen möglich ist, können die Daten von CrewBrain abgerufen werden.

Hinweise zur Ermittlung der korrekten URL

Die erste Frage ist: auf welchem Port läuft die API? Standardmäßig ist es bei Easyjob der Port 8008, das lässt sich in den Easyjob-Einstellungen aber auch ändern. Am besten macht man direkt auf dem Rechner, auf dem der Epirent-Server läuft, einen Browser auf und gibt dort folgendes in die Adresszeile ein:

http://localhost:8008/api.json/Common/GetGlobalWebSettings

Da sollte Easyjob mit einer Liste der globalen Einstellungen antworten, dieser Endpunkt ist auch ohne Anmeldung erreichbar. Wenn keine Antwort kommt, dann stimmt der Port nicht und muss ggf. angepasst werden.

Wenn das klappt, geht man an einen anderen PC im lokalen Netzwerk und öffnet wieder einen Browser, gibt diesmal aber statt „localhost“ die IP-Adresse des Easyjob-Servers an. Auch das sollte dann funktionieren.

Jetzt kommt der eigentliche Schritt der Portfreigabe in der Firewall oder im Router. Sobald diese eingerichtet ist, kann man (am besten über einen PC oder ein Handy außerhalb eures lokalen Netzwerks) versuchen, die öffentliche IP (oder die Dyn-DNS-Adresse) anstelle von „localhost“ in die URL einzutragen. Sobald auch damit entweder die Fehlermeldung oder die Liste der Mandanten bekommt, sollte alles bereit sein und die Adresse kann in CrewBrain eingetragen werden.

Sicherheit bei der Portfreigabe: Durch die Portfreigabe wird die Easyjob-API im Internet öffentlich freigebeben. Aus diesem Grund macht es Sinn, die Freigabe auf bestimmte IPs - in dem Fall die IPs unseres Produktions- und unseres Standby-Servers - einzuschränken.

Basis-Einstellungen

Wenn der API-Abruf funktioniert und der Benutzer angemeldet ist, bietet die Synchronisation verschiedene Konfigurationsmöglichkeiten, um die Projekte sauber aus Easyjob zu übertragen.

Projektliste über API vs. hochgeladene Projektliste

Über die Easyjob-API können maximal 50 Projekte für einen Kalendertag abgerufen werden. Dies beinhaltet auch Langzeitprojekte und Dauermieten. Sofern hin und wieder mehr als 50 Projekte an einem Tag durchgeführt werden, muss die Easyjob-Projektliste daher auf dem Server erzeugt und an CrewBrain übertragen werden.

Erzeugen der Projektliste

Mithilfe von PowerShell kann die entsprechende Projektliste direkt auf dem Easyjob-Server erzeugt werden. Der Servername und Pfad sind ggf. anzupassen.

sqlcmd -S easyjob-server\easyjob6 -U sa -P _easyjob6P@ssW0rd_ -Q "select IdProject from easyjob.dbo.project where startdate > GETDATE()" -o "C:\users\...\export.csv" -W -w 1024 -s ";" -h-1

Hierbei müssen Werte wie easyjob-server\easyjob6, ggf. das Passwort und der Pfad (C:\users\...\export.csv) an die lokalen Gegebenheiten angepasst werden.

Projektliste hochladen

Das Hochladen der Projektliste kann entweder manuell erfolgen, oder mit dem folgendem PowerShell-Befehl ebenfalls automatisiert werden.

Invoke-RestMethod -Uri 'http://testfirma.crewbrain.test/easyupload' -Method Post -InFile 'C:\users\...\export.csv'

Hierbei muss die URL (Subdomain) und der Pfad der Datei an die eigenen Gegebenheiten angepasst werden.

Mapping

Über das Mapping können Ressourcen-Funktionen, Status und weitere Daten zwischen Easyjob und CrewBrain zugeordnet werden.

Status

Die Termin-Status können nach einem Abruf der in Easyjob konfigurierten Status gemappt werden. Hierbei kann angegeben werden, welche Projekte mit welchem Status überhaupt übernommen werden sollen, und welcher Status ihnen in CrewBrain zugeordnet sein soll.

Ressourcen-Funktionen

Unter dem Punkt "Ressourcen-Funktionen" wird das Mapping der Easyjob-Ressourcen zu den CrewBrain-Kategorien (z.B. Tontechniker, Lichttechniker, etc.) vorgenommen. Zunächst können über den Button "Easyjob-Funktionen abrufen" die Ressourcen-Funktionen abgerufen werden. Anschließend kann für jede Funktion definiert werden, ob sie synchronisiert werden soll und wenn ja, welche CrewBrain-Kategorie dafür verwendet werden soll.

In Easyjob geplante Ressourcen (Mitarbeiter und Fahrzeuge) werden, sofern sie in Easyjob im Projekt bereits geplant sind, vollständig nach CrewBrain übernommen. Hierbei versucht die Synchronisationlogik, bereits bestehende Datensätze zu erkennen und automatisch zu Mappen. Datensätze (Mitarbeiter und Fahrzeuge) die noch nicht in CrewBrain bestehen, werden automatisch durch die Synchronisation in CrewBrain angelegt.

Kunden & Locations

Die Übernahme von Kunden & Locations erfolgt automatisch, sobald sie in einem Job oder Projekt benötigt werden.

Manueller und automatischer Sync

Der Synchronisationsprozess läuft automatisch alle 2-3 Stunden und hält die Daten somit immer aktuell. Zudem gibt es in CrewBrain in den Kalender-Ansichten oben ein Synchronisations-Symbol, über welches der Prozess auch manuell (für den gesamten Datenbestand) gestartet werden kann. Dies ist zum Beispiel dann sinnvoll, wenn gerade ein neuer Auftrag im Quellsystem erstellt wurde.

Zusätzlich zu dieser Möglichkeit, den Sync-Prozess zu starten gibt es das selbe Icon auch in allen synchronisierten Jobs. Dort kann über ein Menü entweder die Synchronisation für diesen einen Job angestoßen oder die Synchronisation für diesen Job bzw. dieses Projekt pausiert werden.

Synchronisation pausieren

Wird die Synchronisation in einem Job oder Projekt über das Kontextmenü pausiert, werden keine Änderungen mehr aus Epirent übernommen. Das ist insbesondere dann hilfreich, wenn manuell Änderungen in CrewBrain vorgenommen werden, die nicht mehr zu den ursprünglich aus Epirent übertragenen Daten passen.