Custom Flow Event wird in Shopware 6.7.7 nicht ausgeführt

Hallo zusammen,

ich entwickle ein Plugin für Lagerbestand-Benachrichtigungen und habe ein Problem: Mein
Custom Flow Event wird dispatched, aber der Flow Builder führt keine Flows dafür aus.

Implementierung

Event-Klasse (implementiert FlowEventAware, ProductAware, MailAware):

class LowStockEvent extends Event implements FlowEventAware, ProductAware, MailAware
{
public const EVENT_NAME = ‚foo.product.low_stock‘;

  public function getName(): string
  {
      return self::EVENT_NAME;
  }
  // ... alle erforderlichen Methoden implementiert

}

BusinessEventCollectorSubscriber (registriert mit Priority 1000):

public function onCollectBusinessEvents(BusinessEventCollectorEvent $event): void
{
    $definition = $this->businessEventCollector->define(LowStockEvent::class);
    $event->getCollection()->set($definition->getName(), $definition);
}

Event Dispatch:
$event = new LowStockEvent($context, $productId, $productName);
$this->eventDispatcher->dispatch($event, $event->getName());

Was funktioniert

  • Event wird dispatched (eigene Log-Einträge beweisen es)
  • BusinessEventCollectorSubscriber ist registriert
  • Flow existiert in DB (event_name = ‚foo.product.low_stock‘, active = 1)
  • Alle Interfaces korrekt implementiert

Das Problem

  • debug:event-dispatcher foo.product.low_stock zeigt: „The event does not have any registered listeners“
  • Flow wird nie ausgeführt
  • Keine Flow-bezogenen Fehler in den Logs

Was ich bereits versucht habe

  • Cache geleert (cache:clear, cache:pool:clear)
  • dal:refresh:index ausgeführt
  • Flow-Record aktualisiert
  • Standard-Events funktionieren korrekt

Fragen

  1. Gibt es einen speziellen Service-Tag für Plugin-basierte Custom Flow Events in 6.7?
  2. Registriert der Flow Builder Listener automatisch für FlowEventAware Events?
  3. Gibt es einen Unterschied zwischen App flow.xml Events und Plugin Events?

Umgebung: Shopware 6.7.7.1, PHP 8.3.30

Danke für eure Hilfe!

Die Dokumentation bist du einmal durchgegangen?

Hab das Problem gefunden.
Ich hab eine getSalesChannelId() Methode erstellt. Diese löst die sales channel ID auf und
gibt sie an das LowStockEvent weiter.