Bestellung nach Abschluss an Fremdsystem übergeben und Flag setzen

Nachdem der Kunde bezahlt hat, bzw. bei Gratisbestellungen sofort nachdem die Bestellung getätigt wurde, sollen die Orderdaten an ein Fremdsystem übergeben werden.

Folgende Fragen:

–>Welcher Event ist hierfür passend (entweder nach Zahlung oder falls gratis, dann sofort)?

habe es bis jetzt mit onOrderTransactionWritten versucht und Vergleich des States mit OrderTransactionStates::STATE_PAID, aber wenn die Bestellung gratis wäre, wäre ja kein PAID?

Welchen Event sollte man für diesen Anwendungsfall am besten verwenden?

–>Nach erfolgreicher Übertragung der Order an das Fremdsystem müsste ich in der Order in SW6 einige Daten speichern (bzw. zumind. ein Flag um zu merken, welche Orders bereits erfolgreich an das Fremdsystem übergeben wurden.

Dies wurde mit custom_fields der Order probiert:

 $customFields["ext_submitted"] = true;
  $customFields["ext_response_state"] = "Test";
  $data = [[
      'id' => $order_id,
      'versionId' => $version_id,
      'customFields' => $customFields
  ]];
  $this->orderRepository->update($data, $event->getContext());

allerdings scheint es hier massive PRobleme mit den einzelnen Transaktions der Order zu geben, und somit stehen meine Inhalte zwar in den Custom-Field Spalten, aber anscheinend in einem falscher Transaktion-Zeile.

Wie speichert man solche Infos in Orders? Alternativ würde ich eine eigene Entity machen und dies dort speichern.