The Event Queue is a message broker system within iCFM. It lets you react to things happening in iCFM - a Project status changing, a Media record being updated, a Purchase Order being approved - by having iCFM notify a web service that you control. From there you can trigger whatever you need: email alerts, folder creation, updates in another system, or anything else your workflow requires.
Before you start
You will need a publicly reachable web service that our servers can call. Most customers do this using a reverse proxy - something like nginx works well, pointing at a web service or script on your LAN.
The Event Queue is configured by CETA at our end, so it is not something you can switch on yourself. The steps below cover what we need from you.
Setting it up
- Set up a listener endpoint on your domain, for example https://cetaevents.yourdomain.studio/listen.php
- Send the URL to CETA Support, along with which events you are interested in
- We configure your iCFM instance to send to that URL
- Configure your listener to action or ignore each event as required
Sending different events to different URLs
The destination URL can be set globally, so that every event goes to a single endpoint, or per Project Type, so that events raised against different Project Types go to different endpoints. If you run several Project Types and want them handled separately, let us know when you send your URL through.
How it works
When a relevant event occurs, iCFM writes a record to its event queue and then calls your URL, passing the ID of that queued event and the event type.
Your listener therefore receives a notification that something happened, rather than the full detail of what happened. To retrieve the detail, use the ID passed to your listener to look up the corresponding eventqueue record via the Spectrum API. That record holds the event type, the user responsible, the timestamp and a JSON payload.
Things to be aware of
- Events tell you a record was saved, not what changed inside it. The payload varies by event. Some carry useful context — a Project status change, for example, includes the old and new status — but others simply indicate that the record was saved. If you need to know which specific field changed, your listener will usually need to compare against its own stored copy of the record.
- Not every event is raised by every route into iCFM. Changes made through the Spectrum API do not currently raise every event that the same change would raise in the iCFM interface. If your integration both writes to iCFM and listens for events, check the Spectrum documentation for the events you rely on (see below).
- Delivery is a single call. Your endpoint should accept the request quickly and do any slow processing afterwards.
Available events
The events below are those present in iCFM. Not all of them are raised by the Spectrum API — for the current Spectrum support status of each event, developers should refer to the API documentation for your instance at https://[your-instance].cetacloud.tv/api/cetadocs/?page=Eventqueue
| Event | Description |
|---|---|
| allocation_change | Any change to Project Type information |
| client_attend_added | Client Attending information added |
| client_attend_deleted | Client Attending information deleted |
| client_attend_modified | Client Attending information updated |
| company_added | A new Company record created |
| company_modified | An existing Company record updated |
| despatch_data_update | Despatch Note saved |
| despatch_status_change | Despatch Note status changed |
| dmg_actual_modified | DMG Actuals updated |
| dmg_description_modified | DMG Description updated |
| dmg_input_added | A DMG Input item added to a job |
| dmg_input_deleted | A DMG Input item removed from a job |
| dmg_input_modified | A DMG Input item updated |
| dmg_job_allocated | DMG Job allocated to a user |
| dmg_job_detail_allocated | A DMG job detail row allocated to a user |
| dmg_operation_added | A DMG Operation added to a job |
| dmg_operation_deleted | DMG Operation on a job deleted |
| dmg_operation_modified | DMG Operation on a job modified |
| dmg_output_added | A DMG Output item added to a job |
| dmg_output_deleted | A DMG Output item removed from a job |
| dmg_output_modified | A DMG Output item updated |
| dmg_quantity_modified | Quantity on a DMG Operation updated |
| dmg_service_added | A DMG Service added to a job |
| dmg_service_deleted | A DMG Service removed from a job |
| dmg_service_modified | A DMG Service updated |
| dmg_work_started | Work started against a DMG job |
| dmg_work_stopped | Work stopped against a DMG job |
| gekko_create | Internal iCFM reporting event |
| job_completed | A Job marked as complete |
| job_detail_added | A row added to a Job |
| job_detail_completed | A Job row marked as complete |
| job_detail_deleted | A Job row deleted |
| job_detail_started | Work started against a Job row |
| job_detail_stopped | Work stopped against a Job row |
| job_saved | A Job saved |
| job_status_change | A Job status changed |
| lead_added | A new Lead created |
| lead_comment_added | A comment added to a Lead |
| lead_modified | An existing Lead updated |
| lead_status_assigned | A Lead assigned to a user |
| lead_status_completed | A Lead marked as complete |
| lead_status_modified | A Lead status changed |
| lead_to_project | A Lead converted into a Project |
| library_data_update | An existing Media record saved |
| library_item_created | A new Media record created |
| note_added_to_job | A note added to a Job |
| note_added_to_jobdetailID | A note added to a Job row |
| po_status_change | A Purchase Order status changed |
| project_comment_added | A comment added to a Project |
| project_created | A new Project created |
| project_status_change | A Project status changed |
| project_step_status_attr_change | A Project step, status or attribute changed |
| quote_created | A new Quote created |
| quote_status_change | A Quote status changed |
| resource_created | A new Resource created |
| resource_freelance_flag_change | A Resource marked as, or unmarked as, freelance |
| resource_update | An existing Resource updated |
| resource_update_from | A Resource updated from another source |
| risk_assessment_email | A Risk Assessment email raised against a Quote |
| rs_added | A Resource Schedule booking added |
| rs_deleted | A Resource Schedule booking deleted |
| rs_modified | A Resource Schedule booking updated |
| rss_actuals_completed | Actuals completed against a Resource Schedule service |
| rss_added | A service added to a Resource Schedule booking |
| rss_deleted | A service removed from a Resource Schedule booking |
| rss_modified | A service on a Resource Schedule booking updated |
| spot_saved | A Spot record saved |
| sundry_saved | A Sundry Cost saved |
If you are unsure which events suit your workflow, or you need help interpreting a payload, contact CETA Support and we will point you in the right direction.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article