Zum Hauptinhalt springen

Ereignistypen

Diese Seite listet die Ereignisse, die SHIPM8 auslöst, nach Bereich gruppiert. Zu jedem finden Sie den trigger identifier, den Sie ins Abonnement tippen, und den passenden trigger type. Beides muss zusammenpassen, sonst greift das Abonnement nicht — siehe Ein Abonnement anlegen.

Einen Identifier lesen

Die meisten Identifier bestehen aus drei Teilen:

$module_object_action
  • module — der Teil von SHIPM8, aus dem das Ereignis kommt (invoicing, nautical, customcontent und so weiter).
  • object — die Art Datensatz (invoice, visit oder der System code eines Ihrer eigenen Objekte).
  • action — was passiert ist (add, update, finalized, eta …).

Das erste Zeichen ist bedeutsam:

  • $ — das Ereignis kommt aus SHIPM8 selbst.
  • @ — das Ereignis kommt von außen, geschickt von einem externen System.

Manche Identifier haben nur zwei Teile, und geplante Jobs nutzen eine ID statt eines Namens. Das ist unten jeweils vermerkt.


Rechnungen

Ereignisse rund um Rechnungen. Der mitgeführte Datensatz ist die Rechnung selbst.

Trigger identifierTrigger typeWann es passiert
$invoicing_invoice_addCreateEine Rechnung entsteht — von Hand, über einen Rechnungsablauf oder per Import.
$invoicing_invoice_updateUpdateEine Rechnung wird geändert. Das Ereignis trägt auch die Liste der geänderten Felder.
$invoicing_invoice_deleteDeleteEine Rechnung wird gelöscht.
$invoicing_invoice_cancelGenericEine Rechnung wird storniert.
$invoicing_invoice_splitGenericEine Rechnung wird in mehrere aufgeteilt.
$invoicing_invoice_finalizedGenericEine Rechnung wird final.
$invoicing_invoice_pendingapprovalGenericEin Rechnungsablauf legt eine Rechnung zur Freigabe vor.
$invoicing_invoice_pendingverificationGenericEin Rechnungsablauf legt eine Rechnung zur Prüfung vor.

$invoicing_invoice_finalized ist hier das Arbeitspferd: der Moment, in dem eine Rechnung feststeht und an ein Buchhaltungssystem gehen kann.


Eigene Datensätze (eigene Daten)

Ereignisse an den Objekten, die Sie selbst unter Eigene Daten eingerichtet haben. Weil diese Objekte je Organisation verschieden sind, bauen sich die Identifier aus dem System code Ihres Objekts auf — dem Kurzcode an der Objektdefinition:

$customcontent_<system code>_<action>

Ein Objekt mit dem System code order ergibt also $customcontent_order_add, $customcontent_order_update und so weiter.

AktionsteilTrigger typeWann es passiert
_addCreateEin Datensatz dieser Art entsteht.
_updateUpdateEin Datensatz wird geändert. Trägt die Liste der geänderten Felder.
_deleteDeleteEin Datensatz wird gelöscht.
_detachDeleteEin Datensatz wird von dem Datensatz gelöst, mit dem er verknüpft war.

Der Posteingang

Datensätze, die über den Posteingang ankommen und erst freigegeben werden müssen, bevor sie echte Datensätze werden, haben ein eigenes Modul, customcontentinbox:

$customcontentinbox_<system code>_<action>
AktionsteilTrigger typeWann es passiert
_addCreateEin Posteingangseintrag entsteht.
_updateUpdateEin Posteingangseintrag wird geändert.
_deleteDeleteEin Posteingangseintrag wird gelöscht.
_approveGenericEin Posteingangseintrag wird freigegeben und wird ein echter Datensatz.
_declineGenericEin Posteingangseintrag wird abgelehnt.
_addshadowGenericEine Schattenkopie eines Posteingangseintrags entsteht.
Welches brauche ich?

Automatisieren Sie etwas am fertigen Datensatz, nehmen Sie customcontent. customcontentinbox nur dann, wenn es um Ankunft und Freigabe eingehender Daten geht.


Hafenbesuche und Bewegungen

Ereignisse, die entstehen, während SHIPM8 die Anlaufdaten aus den Systemen des Hafens aktuell hält. Sie feuern je geändertem Wert, deshalb nennt der Identifier den geänderten Wert statt einer Aktion. Alle haben den trigger type Generic.

Für einen Hafenbesuch — den ganzen Anlauf:

Trigger identifierWann es passiert
$nautical_visit_etaDie voraussichtliche Ankunftszeit ändert sich.
$nautical_visit_ataDie tatsächliche Ankunftszeit wird gesetzt.
$nautical_visit_etdDie voraussichtliche Abfahrtszeit ändert sich.
$nautical_visit_atdDie tatsächliche Abfahrtszeit wird gesetzt.
$nautical_visit_statusDer Status des Besuchs ändert sich.
$nautical_visit_agentDer Agent des Besuchs ändert sich.
$nautical_visit_entrypointDer Besuch bekommt seinen Einlaufpunkt.
$nautical_visit_exitpointDer Besuch bekommt seinen Auslaufpunkt.
$nautical_visit_pierinDas Schiff kommt an einem Liegeplatz an.
$nautical_visit_pieruitDas Schiff verlässt einen Liegeplatz.
$nautical_visit_lockentryDas Schiff fährt in eine Schleuse ein.
$nautical_visit_lockexitDas Schiff verlässt eine Schleuse.

Für eine Bewegung — einen einzelnen Abschnitt des Besuchs:

Trigger identifierWann es passiert
$nautical_movement_etaDie voraussichtliche Ankunft der Bewegung ändert sich.
$nautical_movement_ataDie tatsächliche Ankunft der Bewegung wird gesetzt.
$nautical_movement_etdDie voraussichtliche Abfahrt der Bewegung ändert sich.
$nautical_movement_atdDie tatsächliche Abfahrt der Bewegung wird gesetzt.
$nautical_movement_agentDer Agent der Bewegung ändert sich.

Die Daten dahinter beschreibt Hafenbesuche.

Das sind rege Ereignisse

Ankunfts- und Abfahrtszeiten werden im Vorfeld eines Anlaufs immer wieder korrigiert — ein ETA-Ereignis kann für einen Besuch also viele Male feuern. Ergänzen Sie Bedingungen, damit die Automatisierung nur dann handelt, wenn sie soll — etwa auf den tatsächlichen Zeiten statt auf den geschätzten.


Dokumente (Datenexport)

Ereignisse, die entstehen, nachdem SHIPM8 etwas erzeugt und ausgeliefert hat. Beide haben den trigger type Generic. Die Ereignisdaten sagen, welche Vorlage verwendet wurde, welche Datensätze betroffen waren, ob es geklappt hat und welche Fehlermeldungen es gab.

Trigger identifierWann es passiert
$contentdistribution_template_distributeEin Dokument wurde aus einer Exportvorlage erzeugt und ausgeliefert.
$contentdistribution_notification_distributeEine Benachrichtigung wurde erzeugt und ausgeliefert.

Damit bauen Sie „und danach festhalten, dass es verschickt wurde“ — siehe Ereignisse verketten.


Eingehende Webhooks (externe Systeme)

Schickt ein angebundenes System eine Änderung an SHIPM8, kommt sie als Ereignis mit einem @ davor und nur zwei Teilen an:

@service_object

Der trigger type ist Generic. Unterstützt wird derzeit Exact Online, die Identifier sehen also aus wie @exactonline_salesinvoice oder @exactonline_purchaseentry — der Objektteil ist der Objekttyp, für den der Webhook auf der Exact-Online-Seite registriert ist.

Anders als bei den übrigen Ereignissen sind die Daten hier die Nutzdaten des externen Systems, nicht ein SHIPM8-Datensatz. Deshalb gehen Webhook-Automatisierungen meist mit einer Aktion Content distribution export additional data oder Content distribution import zusammen — siehe Aktionstypen.

Den Webhook selbst einzurichten gehört zur Schnittstelle; siehe Exact Online.


Geplante Jobs

Ein geplanter Job hat keinen namensbasierten Identifier. Stattdessen ist die ID des Jobs — ein langer Code der Form 3f2a1b00-… — der trigger identifier, und der trigger type ist Hangfire. Der Job läuft nach seinem Zeitplan und übergibt seine Daten an jedes Abonnement, das seine ID trägt.

So entsteht eine wiederkehrende Automatisierung: Der Job liefert das Wann, das Abonnement das Was. Die ID bekommen Sie vom Job selbst.


Ihre eigenen Kettenereignisse

Jeder Identifier, den Sie sich auf dem Reiter Triggers einer Aktion ausdenken, wird zu einem Ereignis, das Sie abonnieren können. Geben Sie ihm den trigger type Generic, außer Sie lassen den Namen bewusst auf eines der Wörter enden, die unter Ein Abonnement anlegen stehen. Siehe Ereignisse verketten.


Wenn das gesuchte Ereignis fehlt

Mit SHIPM8 kommen neue Ereignisse dazu, und nicht jede Änderung in der App löst eines aus. Steht der Moment, den Sie automatisieren wollen, nicht in diesen Tabellen, fragen Sie den SHIPM8-Support — manchmal gibt es ein benachbartes Ereignis, das mit den richtigen Bedingungen passt, und manchmal ist es eine kleine Ergänzung auf unserer Seite.

Zu „Processed“

Den trigger type Processed gibt es für Ereignisse, deren Name auf _processed endet. Derzeit löst kein Bereich so eines aus, Sie brauchen ihn also noch nicht — er ist für später reserviert.