Release announcements, helpful tips, and community discussion


Cerb (6.3) is a feature upgrade released on March 25, 2013. It contains over 64 new features and improvements from community feedback.

To check if you qualify for this release as a free update, view Setup » Configure » License. If your software updates expire on or after March 18, 2013 then you can upgrade without renewing your license.

Important Release Notes

  • Make a backup before upgrading.

Third-Party Plugin Changes

If you maintain third-party Cerb plugins, the following changes may be necessary to ensure compatibility with 6.3+:

  • Class name changed: C4_ORMHelper -> Cerb_ORMHelper



  • [CHD-3275] Workers may now upload multiple files at once when using an HTML5-compatible browser (e.g. Chrome). Previously, each file had to be attached individually using the file dialog. Multiple files may be selected by using CTRL/CMD, or SHIFT, when left-clicking.
  • [CHD-3284] The pile sorter on ticket worklists now allows ‘merge’ as an action.
  • [CHD-3304] When displaying a mail conversation, each expanded message now contains a ‘permalink’ link below the headers. This makes it easy to send a link to another worker regarding a specific message. In addition to scrolling the browser down to the appropriate message, the message will also be briefly highlighted for a visual cue.
  • When displaying a mail conversation, each comment now contains a ‘permalink’ link in the top right. This allows workers to exchange URLs that will focus a specific comment in the timeline. Just like the permalinks for messages, the focused comment will show a highlight effect as a visual cue. The focused message will also be maximized automatically.
  • When viewing a mail conversation timeline, the ‘minimize’ and ‘maximize’ links will now only be shown for the message under the mouse cursor. This improves usability by reducing the number of links on the page at a given time.

  • When clicking into a ticket from a message worklist, the conversation will now automatically focus and expand that message.

  • [CHD-3302] Creating a sticky note on a ticket message will now automatically notify any watchers on that ticket.

  • When displaying a sticky note, a ‘permalink’ link is now available in the top right. This allows workers to share a URL that automatically focuses a particular note.
  • [CHD-3297] Fixed a bug in ticket conversations where sticky notes were no longer displayed for a particular message after minimizing and maximizing it.

  • When replying to mail, the text box is no longer forced as the focused element. This allows VA automation to move the cursor somewhere else (e.g. to the first blank line).


  • [CHD-3296] Bucket names may now be up to 64 characters in length. When editing a bucket, the form will now enforce this maximum length.


  • [CHD-3307] The ‘defunct’ flag will now be automatically removed from a sender’s record if they send a new incoming message.

Virtual Attendants

Behavior statistics

  • [CHD-3272] Virtual Attendant usage statistics are now recorded when behaviors run. Entries are sorted by a per-day timestamp, each with the number of uses and the cumulative runtime for that time period (which can be used to compute average runtimes). Previously, usage stats for Virtual Attendant behaviors were not collected at all. These stats provide much more insight into how Virtual Attendants are behaving.

  • Added a ‘Virtual Attendant Usage over Date Range’ report. This allows reporting on Virtual Attendant behavior filtered to a specific time period. Data is displayed for the number of uses for each behavior, along with its total runtime, average runtime, owner, and event. The report may also be sorted by any of those fields.

Improved conditions

  • [CHD-3260] Virtual Attendant behaviors that involve email addresses (e.g. new message in a group conversation) may now create conditions that check the ‘is defunct’ status of those addresses.

Improved actions

  • When adding actions to a Virtual Attendant behavior, the ‘Add Action’ button is now a filterable menu (like when adding outcomes) rather than dropdown. This makes it much more efficient to filter a long list of actions because the filtering text doesn’t have to match the beginning of the option, like with a dropdown. For instance, filtering for ‘Face’ will quickly limit the actions to a list including ‘Post to Facebook’.
  • [CHD-3201] Virtual Attendants may now set custom mail headers when using the ‘Send Email’ or ‘Send Email to Recipients’ actions. This is useful if you want to provide a header like ‘X-Precedence: bulk’ to combat auto-responder loops, or if you want to send structured information in email to an automated script.
  • [CHD-2895] Virtual Attendants may now add new recipients to conversations from ticket and message-based behaviors.
  • [CHD-2789] Virtual Attendants may now set organizations as an action on ticket and message-based behaviors. The organization may be set for the ticket or any associated addresses (e.g. sender). For example, a VA can automatically set an organization for new senders based on their domain name.
  • [CHD-3258] When Virtual Attendants post a new comment, the author of that comment will now be set to the owner of the VA behavior. Previously, comments created through Virtual Attendants always showed the author as ‘(system)’, which wasn’t very helpful. Now the app, or any role, group, or worker will be shown instead.

Set cross-record custom fields

  • [CHD-3280] Virtual Attendant behaviors may now set cross-record custom fields. For example, a ticket behavior can also set custom fields on the sender and their organization. This enables many new VA workflows. You could now have a ‘new message’ behavior set a date custom field on the sender’s record to keep track of their latest incoming message. This could be used for sales, marketing, or even to throttle auto-replies. For another example, VAs could automatically manage ‘unsubscribe’ functionality by setting a ‘do not contact’ custom field on sender addresses when they reply with ‘remove me’. Previously, all this advanced behavior required scheduling macros on other records, which didn’t run immediately, and also left a lot of one-use macro clutter in Virtual Attendants. This new solution is much simpler and more powerful.

Reply macros

  • [CHD-882] [CHD-3244] Implemented a new Virtual Attendant event point for ‘[UI] Before replying to a message’. This allows behaviors that automate modifications to the reply form in the browser using jQuery actions. For example, a group-owned behavior can set the default ‘status’ (e.g. open, waiting, closed) per group. If the default status is ‘waiting’ the reopen date can be automatically set with intelligence, such as “+4 business hours”, which accounts for evenings and weekends. As another example, the ‘custom fields’ section can be hidden by default using a worker-level reply behavior, and made visible using another ‘Show custom fields’ behavior from the reply form in only the situations where it’s needed. Behaviors for this event may be owned by the app (global), roles, groups, or workers.
  • Added a ‘[UI] While replying to a message’ event point for Virtual Attendant behavior. This makes user interface automation possible with macros that a worker can activate as-needed. These actions can run custom jQuery code. For example, during a reply a worker may want to automatically insert a summarized history of the current recipient’s support history (e.g. reference number, subject, date, status). This wouldn’t be possible using snippets, but a VA behavior can build a worklist in a private behavior variable and then use the results as placeholders that output some text in the reply box. A single macro can also: watch the conversation, add attachments, change the status, move the convo, assign it, and click the ‘send’ button. ‘While replying’ macros may be owned by the app (global), roles, groups, or workers.

Simulator improvements

  • The Virtual Attendant behavior simulator will now show more property values in the popup. Previously, the simulator was only showing properties that had values, and it wasn’t using the lazy loader to look up values on linked records.

  • Implemented Virtual Attendant simulator output for the ‘Set owner’ action on ticket and message-based behaviors.

New comment events

  • A new global event point for ‘New comment on a record’ is available for Virtual Attendant behaviors. This triggers every time a new comment is added to any record. Abstract placeholders are available for the record type (e.g. task), record label (e.g. task title, ticket subject), and record permalink URL. This makes it very easy to send comment notifications to any channel – email, SMS, Campfire, HipChat, etc. Comment behaviors can be filtered by type, author, content, etc.
  • Added a new group-level event point for ‘New comment on a conversation in group’. This triggers when a new comment is added to one of the group’s tickets, which allows Virtual Attendant behavior to perform custom business logic. For instance, managers may elect to receive an email copy of all group comments without having to explicitly watch every conversation. Comments may also be posted to other channels like SMS, Campfire, or HipChat.

Mail filtering

  • The ‘is defunct’ field of the sender may now be used as a condition in VA-driven mail filtering behaviors.
  • Virtual Attendant Mail Filtering behaviors may now set the sender ‘is defunct’ and ‘is banned’ fields as actions. This makes it possible to ban/unban a sender during mail filtering, and to remove the defunct flag when a previously defunct sender writes a new incoming message.
  • Fixed an issue with using the Virtual Attendant Simulator on Mail Filtering behaviors. Due to the way that the event works in conjunction with the parser, the underlying fields (i.e. those not set by the simulator’s form) didn’t have any values set. This made it difficult to simulate behaviors that looked at related records; for example, getting or setting values for the sender as an action during mail filtering. The issue was solely with the simulator; the actual events always worked properly.


  • [CHD-3305] Fixed an issue with ‘Setup->Virtual Attendants’ where adding a new behavior on an owner tab (e.g. app, role, group, worker) didn’t always refresh the affected part of the page. This had to do with page elements not having unique IDs, and multiple owner tabs having the same event point in use. In this case, the first tab showing the event point was improperly being reloaded, rather than the focused tab.



  • Any number of calendars can now be added to workspaces as tabs. These calendars are capable of displaying any worklist data that contains dates: tasks due, invoices billed, tickets created, worker replies, time tracking, worker logins, Twitter @mentions, etc. A calendar is configured using a worklist, and the results will be displayed in the appropriate day’s cell. A label format using placeholders may be provided to customize the output; for example, an invoice calendar may show the amount due and the client, a task calendar may show the title and time, and a login calendar may show each worker’s name. A color may be configured for each set of labels.


  • [CHD-3263] Worklists with date fields can now be filtered by that field being blank. Previously, it was only possible to find unset custom date fields with a search like ‘BETWEEN 0 AND 1’ or ‘BETWEEN big bang AND -10 years’. This was unintuitive compared to a simple ‘is blank’ operator.

  • Worklists with date fields can now be filtered using a ‘NOT BETWEEN’ operator. This allows a date range to be exclusive rather than inclusive.

  • [CHD-3136] Fixed an issue when the ‘watcher’ filter was added to both the required and user-editable filter sections of a worklist.

  • The field names are now properly capitalized in the ‘Export’ action of worklists.

  • [CHD-3295] The ‘(dismiss)’ option for worklist helpers is now consistently located in their top right corner. Previously, an ‘undo’ helper showed dismiss on the left.

  • [CHD-3274] Dashboard Widget worklists may now use the ‘export’ feature.


  • [CHD-3289] Admins may now view a list of all active worker sessions from Setup->Sessions. This includes IP addresses and user agents (e.g. browser, OS, version). Sessions may be force expired from the Bulk Update popup.
  • [CHD-3288] Workers may now view their own list of active sessions from Settings->Sessions. This displays IP addresses, browser, and operating system. Sessions can be force logged out by using the Bulk Update button.
  • [CHD-3290] When logging out, a worker may now choose ‘Sign off (all my sessions)’ to expire all their active sessions at the same time.
  • [CHD-2570] Fixed an issue where the “Who’s Online” list doesn’t display if the Suhosin extension is installed and session data is being encrypted. Cerb no longer needs to decrypt sessions to list active workers.

  • [CHD-2835] Disabling a worker’s account now immediately ends all of their active sessions.

  • The ticket ‘peek’ popup now verifies that the current worker has access to the ticket’s group.

  • [CHD-3306] The Search->Messages worklist now enforces group memberships as a filter.


  • [CHD-1987] Snippet usage statistics are now recorded with timestamps. Previously, it was only possible to report how many times each worker used a particular snippet (i.e. all-time). Now it is possible to report on how often a snippet was used over a given date range. This uncovers trends where a snippet may become more or less popular over time; which is useful when performing maintenance on those records. The original cumulative stats are imported at the beginning of the time range so they are included in the grand totals, but not on any reports with a range like “Past 30 days”. New stats will have to be collected for these reports and dashboard widgets to display useful information.

  • [CHD-1987] [CHD-3117] Added a ‘Most/Least Popular Snippets over Date Range’ report. This allows reporting on snippet usage, with filters by date or by any number of workers.

  • Added a ‘total uses’ column to snippet records. This makes it much easier to report on the total number of uses for each snippet. For instance, on a dashboard with a worklist widget. Previously, snippet worklists only showed the hits per worker.


  • [CHD-3268] The Activity Log will now record which worker or Virtual Attendant behavior created a new task.
  • [CHD-3267] Added a ‘created’ field to task records. This can be used for reporting on task creation over time.
  • [CHD-3276] On the profile page of a task, the Comments tab is now the default. It is also shown before the Activity Log tab.

Quick Search

  • When using Quick Search on a date-based field, the options ‘empty’, ‘blank’, or ‘null’ will automatically filter for blank date fields.


  • [CHD-2903] Broadcast messages may now include attachments.


  • Comments may now be authored by any kind of record (e.g. app, role, group, worker, email address). Previously, comments had to be authored by an email address, which didn’t make a distinction between workers, customers, or Virtual Attendants. It would now be possible for the same functionality to mix comments from different sources (e.g. internal and public interfaces). For example, a knowledgebase article could have customer comments that are shown publicly, with worker comments that are highlighted as authoritative.


  • [CHD-3266] Contact Person worklists now have a Bulk Update option to set or unset watchers and custom fields.

  • [CHD-3265] Contact Person records may now be imported in worklists using .CSV (comma-separated value) files. The supported fields are: email address, password, created date, first name, and last name.


  • Files may now be uploaded through the Web-API and saved as attachments. These may then be linked to various records. Refer to the documentation for the ‘/attachments/upload’ action.

: See:

  • [CHD-3066] New mail may now be composed by using the Web-API. This sends an email message to the recipients and creates a new ticket in Cerb. File attachments, status, and custom fields may also be included. Refer to the documentation for the ‘/tickets/compose’ action.

: See:

  • Comments on any record may now be searched through the Web-API. Results may be filtered by target record or author details.

: See:

Support Center

  • [CHD-3300] In the Support Center, the number of knowledgebase articles displayed per page in worklists is now a configurable option.



  • Performed some optimizations on the way attachment link UUIDs (universally unique IDs) are stored and indexed in the database.


  • Modified the way attachment links are inserted into the database so they are compatible with binary logging. Previously, these queries used MySQL’s UUID() function in INSERT statements. This is technically fine, since the UUID value isn’t used in any other tables; however, MySQL may still record error_log entries about using dynamic functions in inserts when binary logging is enabled. These inserts are now done in two steps, with a SELECT UUID() and then an explicit INSERT value for the ‘guid’ column.

Plugin Development

  • Workspace Tab extensions may now provide a configuration section that is displayed in the Edit Tab popup. This provides a consistent experience, opposed to each tab having its own method of being configured.

Maintenance Updates


Cerb6 (6.3.1) is a maintenance update released on April 4, 2013; it contains 9 minor fixes and usability enhancements from community feedback covering the recent 6.3 update. You can follow these instructions to upgrade.

  • [CHD-3312] [VA/Send Email] Fixed a fatal error when using the ‘Send Email’ action in Virtual Attendants with an address list variable as the ‘To:’ field.

  • [CHD-3310] [VA/Orgs] Virtual Attendants can now use the ‘Send Email’ action on organization-based behaviors.

  • [VA/Knowledgebase] Virtual Attendants can now use the ‘Send Email’ action on knowledgebase article behaviors.

  • [VA/Time Tracking] Virtual Attendants can now use the ‘Send Email’ action on time tracking behaviors.

  • [CHD-3315] [Platform/Database] Added an informative error message when the database connection disappears. Devblocks will now gracefully shut down in this case. Previously, this was giving vague errors about ‘getVisit() on a null object’, as Cerb would continue to try to process the request anyway.

  • [CHD-3320] [Mail/Usability] Worked around an issue in Firefox where the reply textbox didn’t auto-focus.

  • [CHD-3313] [Mail/Setup/Reply-From] If there is no default reply-to address then the first result will be used. This fixes an issue on some 4.x to 6.x direct upgrades where no reply-to address was flagged as the default, which caused various issues (inability to create workers because the welcome email failed, etc).

  • [Sessions/Usability] Fixed an issue where PHP was expiring inactive sessions from the database after 24 hours regardless of the Cerb session cookie duration that was set in Setup->Security. The cookie lifetime is now used when pruning inactive sessions, so using the “1 week” or “1 month” expirations should work properly now in all environments.

  • [CHD-3308] [Mail/Keyboard/Usability] Fixed a few issues with keyboard shortcuts while composing or replying and using Ctrl+Shift text selection. This particularly affected Opera.


Cerb6 (6.3.2) is a maintenance update released on April 10, 2013; it contains 5 minor fixes and usability enhancements from community feedback covering the recent 6.3 update. You can follow these instructions to upgrade.

  • [CHD-3323] [Mail/Peek/IE] Fixed an issue on ticket peek with IE8 where the ‘nobody’ shortcut button didn’t change the value of the ‘Owner’ dropdown.

  • [Mail/Attachments/Usability] Addressed an issue where malformed HTML attachments were being truncated in some situations if displayed in the browser. This was caused by the HTML Purifier code introduced in 6.2.5, which removes any potentially malicious Javascript in an HTML attachment that would be executed by a worker within an active Cerb session. This code relied on PHP’s DOMDocument, which is intolerant of malformed HTML markup. The code will now take advantage of the Tidy extension if it’s loaded. This repairs malformed markup before DOMDocument loads it, HTML Purifier cleans it, and Cerb displays it.

  • [Mail/Attachments/Usability] When hovering over a file attachment with the mouse, a ‘download’ link is now revealed. Clicking this link will prompt for an attachment to be downloaded rather than displayed in the browser. Previously, clicking on an attachment always attempted to display it in the browser first (e.g. images, sound files, videos, PDFs, HTML, etc). When displaying HTML content in the browser, Cerb repairs and purifies it to remove Javascript. When downloading an HTML attachment, the raw file is provided without any sanitization. This is useful behavior if you’re sharing HTML files with safe contacts and you do not want the contents to be modified. By downloading HTML, any potentially malicious Javascript no longer has access to the worker’s Cerb session.

  • [Mail/Attachments/Usability] Fixed an issue with purified HTML attachments having their ID attributes stripped when displayed in the browser.

  • [Scheduler/Cron] Fixed an issue with the scheduler where a PHP max_execution_time that can’t be overridden could lead to a single job running per /cron request. This could require several minutes before giving each job a chance to run. The scheduler will now try to run as many jobs as it can within any time limit.