If your module extends a CRUD instance, by adding new actions per row, you might need to be able to catch those when it's clicked by the end-user. To work, every CRUD instance must have that filter registered on "bulkAction" method.

{namespace} here is a dynamic value that might be different according to the Crud Instance you would like to extend. Typically on the service provider, you'll register that even like so.

As this is a filter, your function must return a valid response (status response). A status response has the following shape :

If you would like NexoPOS 4.x to notify which of the processed items was done successfully and which other wasn't, you need to return an array that has 2 additional properties.

   'status' => 'success',
   'message' => __( 'The request has run.' ),
   'success' => 3,
   'failed' => 2

This literally means on the processed items, 3 items went successfully 2 has failed.