![listeners executeGraphsInChains](../figures/listeners-executeGraphsInChains.png)
Use Cases
Possible use cases are:
Execute graphs in chain
For example, we have to execute graph B, only if another graph A finished without any error.
So there is a relation between these graphs.
We can achieve this behavior by creating a graph event listener.
We create a listener for graph finished OK
event of graph A and choose an execute graph
task type with graph B specified for execution.
If we create another listener for graph B with the execute graph
task with graph C specified, it will work as a chain of graphs.
![listeners executeGraphsInChains](../figures/listeners-executeGraphsInChains.png)
Figure 202. The event source graph isn’t specified, thus the listener works for all graphs in the specified sandbox
Email notification about graph failure
![listeners sendEmailOnFailure](../figures/listeners-sendEmailOnFailure.png)
Figure 203. Web GUI - email notification about graph failure
Email notification about graph success
![listeners sendEmailOnSuccess](../figures/listeners-sendEmailOnSuccess.png)
Figure 204. Web GUI - email notification about graph success
Backup of data processed by graph
![listeners backupData](../figures/listeners-backupData.png)
Figure 205. Web GUI - backup of data processed by graph