---
# System prepended metadata

title: Workflow SignalR Hub Events

---

# Workflow SignalR Hub Events

Amorphie broadcasts all workflow events through the SignalR Hub when the client application requests a hub connection for workflow transitions.


## Architecture

There are three types of event sources.
* **Amorphie.Workflow Services** : All transitions, status updates, instance record updates are posted as an event.
* **Amorphie.Workflow Workers** : If the transition is based on Zeebe, Amorphie.Workflow workers (eg SetState) events are broadcast as an event.
* **Zeebe Exporter** : If the transition is based on Zeebe, Zeebe events are broadcast as an event.

Details...
* Every event type is published as different message on SignalR Hub.


## Sample Process
![](https://i.imgur.com/Pm8ivYW.png)

### Event Process

#### Client Action 

**Source** : Service Call, **trx-start-fx-buy**
Payload

```jsonld!
{
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "form-data": {...}
}
```
*With the response of this service call, the client is connected to SignalR Hub.*

#### Hub Event 

**Source** : Amorphie.Service
```jsonld!
{
  "event": "transition-starting",
  "time-stamp": "2023-03-25 11:31:39",
  "state":null,
  "entity":"fx-buy"
}
```
#### Hub Event 

**Source** : Amorphie.Service
```jsonld!
{
  "event": "transition-started",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "data": {...},
  "time-stamp": "2023-03-25 11:31:39",
  "state":"fx-buy-start",
  "entity":"fx-buy",
  "base-status":"LockedInFlow",
}
```

#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-started",
  "worker": "trx-worker-account-balance",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```

#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-completed",
  "worker": "trx-worker-account-balance",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```
if worker fails, worker-failed event publishes also.
**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-failed",
  "worker": "trx-worker-account-balance",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```
#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-started",
  "worker": "trx-worker-check-contracts",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```

#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-completed",
  "worker": "trx-worker-check-contracts",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```
if worker fails, worker-failed event publishes also.
**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-failed",
  "worker": "trx-worker-check-contracts",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:31:39"
}
```
#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-started",
  "worker": "set-state",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:41:39"
}
```
#### Hub Event

**Source** : Amorphie Worker, SetState

```jsonld!
{
  "event": "set-state",
  "state": "contract-needed",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "entity": "fx-buy",
  "available-transitions": [
    {
      "name": "contract-approve",
      "page": "contract-approve",  
      "form": "{...}",
    }
  ],
  "time-stamp": "2023-03-25 11:41:39",
  "state":"contract-need",
  "base-status":"Passive",
  "data": {...},
}
```


#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-completed",
  "worker": "set-state",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:41:89"
}
```

**Source** : Service Call, **contract-approve**
Payload

```jsonld!
{
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "form-data": {...},
  "entity-data": {...},
  "route-data":{...},
  "record-id":{...},
  "transition":"contract-approve",
  "entity":"fx-buy"
}
```
*With the response of this service call, the client is connected to SignalR Hub.*

#### Hub Event 

**Source** : Amorphie.Service
```jsonld!
{
  "event": "transition-starting",
  "time-stamp": "2023-03-25 11:31:39",
  "transition": "contract-approve",
  "state":"contract-need",
  "base-status":"Passive",
  "data": {...},
  "time-stamp": "2023-03-25 11:31:39"
}
```
#### Hub Event 

**Source** : Amorphie.Service
```jsonld!
{
  "event": "transition-started",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "state":"contract-need",
  "base-status":"LockedInFlow",
  "data": {...},
  "time-stamp": "2023-03-25 11:31:39"
}
```
:::danger
Events skipped!
:::

#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-started",
  "worker": "set-state",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:41:39"
}
```
#### Hub Event

**Source** : Amorphie Worker, SetState

```jsonld!
{
  "event": "set-state",
  "state": "waiting-buy-approve",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "entity": "fx-buy",
  "available-transitions": [
    {
      "name": "fx-buy-approve",
      "page": "fx-buy-approve",  
      "form": "{...}",
    }
  ],
  "time-stamp": "2023-03-25 11:41:39",
  "state":"waiting-buy-approve",
  "base-status":"New",
  "data": {...},
}
```


#### Hub Event 

**Source** : Zeebe Exporter
```jsonld!
{
  "event": "worker-completed",
  "worker": "set-state",
  "instance-id": "778fd5c7-5ab0-45b2-a38e-93fbe49f38bf",
  "time-stamp": "2023-03-25 11:41:89"
}
```


