From Cerb Wiki
Jump to: navigation, search

Cerb (7.1) is a major functionality update released on December 14, 2015. It contains over 111 new features and usability tweaks from community feedback. There are 99 additional improvements provided in 5 maintenance updates.

This is a summary of the most significant improvements.

  • To check if you qualify for this release as a free update, view Setup->Configure->License. If your software updates expire on or after Dec 1, 2015 then you can upgrade without renewing your license.
Cerb 510 license expires.png



As mentioned with the 7.0 release earlier this year, the theme of 7.x is personalization and machine learning. To that end, we've made major improvements to contact management in this release. It also sets the stage for our planned community-building improvements in 7.2.

In a few weeks, we'll have been working on Cerb full-time for 14 years. Together, we've taken what started as a simple tool for sharing email accounts in a web browser and evolved it into powerful set of enterprise productivity and workflow automation tools used by thousands of teams around the world.

Cerb has always conceptually been few years ahead of its time, and we owe a great measure of gratitude to you early adopters who have glimpsed the future of enterprise software with us: open source, intelligent, and interactive with both humans and other machines.

While so many other projects have followed the pseudo-zen trend of oversimplification, Cerb has empowered teams to meet their tough challenges head on. That's an investment you won't regret, and it's a mission we'd love to stand behind for several more decades.

- Jeff Standen, Software Architect, Cerb

Important Release Notes


Records are summarized on card popups that provide many shortcuts

710 cards.png

Since the 4.x versions, Cerb has provided a "peek" feature for viewing and editing records without leaving the current page. This is incredibly useful; however, the feature has always required that a worker have write access to the target record, and the popup jumped directly to record editing by displaying every possible field (including custom fields). This is often an overwhelming amount of information for workers who just need a quick way to glance at a record.

In 7.1, record peek popups now display a card-based summary. Workers without the ability to edit a record can still see its card summary. For instance, a regular worker can view the card of an administrator, or of another worker's calendar.

We've added several shortcuts to cards that make it much faster to perform routine workflows:

  • Cards display the most commonly used fields (properties) for a record. We've created a new grid-based UI control to improve readability when there are many properties, as well as to efficiently display a lot of information with a small visual footprint. This grid is also "responsive" -- if you have a larger monitor with a wider popup then more columns of properties will be displayed; and a narrower display (e.g. a mobile device) may display everything in a single tall column.
  • Cards display a summary of record links with clickable buttons that immediately pull up those results in a search popup worklist. Previously, links information was only available from a record's full profile page.
  • Cards provide single-click access to recommendation and watcher functionality.
  • A link to the full profile of a record is available at the top of every card. Holding Cmd/Ctrl while clicking the 'Profile' button will open it in a new browser tab/window.
  • Cards display an 'Edit' button to workers with the appropriate permissions. This behaves the same way that full page profiles do, but on a card that can pop up wherever you are.
  • If there is a record hierarchy, cards automatically display those parent/child relationships as buttons that open cards and search popups on your current page. For instance, the Organization of an Email Address, the Email Addresses of a Worker, the Contacts of an Organization, etc.
  • On contact-based cards (email addresses, contacts, organizations), a ticket summary is displayed with clickable buttons that open search popups. This subtotals the ticket history by status (open, waiting, closed, or all). Previously, this required many clicks into the tabs of a full page profile. Now you can do the same thing from anywhere in Cerb.

Additionally, we've removed the artificial limitation that only one popup of a given type can be open at the same time. You can now open multiple card popups of the same type side-by-side, as well as any number of linked cards, choosers, or search results popups.

The new ticket card popup has a much improved timeline view

700 card ticket timeline.png

The new ticket card popup displays a consolidated timeline for reading a ticket’s full message and comment history from within the popup.

Previously, the message preview option on peek was displayed in a small scrolling window. Now, it scrolls in the main browser window to improve usability.

Previously, comments and messages were displayed separately, which made it a bit confusing to read the timeline and wasted some screen space. Now, messages and comments are displayed in the same timeline.

Previously, attachment links on messages and comments weren’t displayed; now, they are.

Previously, using the next/prev options to read through other messages reloaded the entire popup and lost any editing progress. Now, it just pulls new message content without affecting anything else.

Previously, the message headers (sender/etc) and organization weren’t interactive on message previews. Now, they’re clickable to open their own cards.


Contact records for individuals within organizations independent of communication medium

710 contacts.png

We've added a new 'Contact' record type for tracking individual people within organizations independent of the communication medium (e.g. email, IM, Twitter, Facebook, forums, etc). Previously, the closest worker-facing record was 'Email Address', which had several flaws: extended contact information like phone numbers didn't make conceptual sense on address records, an individual may frequently communicate using multiple email addresses leading to a lot of duplication, etc. This improves many customer relationship management (CRM) workflows.

Multiple email addresses may be associated with the same contact, although a single email address per contact is designated as the primary email contact method (which simplifies Virtual Attendant and Broadcast behaviors). Also for simplicity, a contact is associated with a single organization, and in situations where the same individual works for multiple distinct organizations, a separate contact record for each organization may be created for that individual.

Email addresses may still be associated directly with organizations, which covers situations where an email address can't be associated with an individual contact (e.g. shared sales@ support@ mailboxes).

Contact records now store names and photos which were previously stored directly on address records (and address records no longer have this info unless they are linked to a contact or org). Any existing first/last name data from addresses will be automatically migrated to the new contact records during the upgrade.

Since contacts are now specific to individuals (opposed to email addresses), they provide many more built-in fields: title, gender, date of birth, location, phone, mobile, username, last login, etc. In many environments, this data was stored in custom fields on addresses which may now be migrated to contacts. Cerb makes use of this new CRM information as well (e.g. gender personalizes the default profile picture, etc).

Finally, contacts are designed to be community-facing profiles, and they will be used by community portals to expand public support/collaboration functionality in near-future updates. Previously, in the Support Center plugin, we had 'Contact Person' records but they weren't tightly integrated or utilized in the worker-facing UI. The legacy 'Contact Person' records have been removed in favor of the new 'Contact' records, and any existing content will be automatically migrated to the new format.

Contact records may be imported from CSV files

Contact records may now be imported/updated using a CSV (comma-separated value) input file from any contact worklist.

710 contacts import.png

Profile Pictures

Built-in profile picture management for every actor record

710 profile pictures.png

We now manage our own profile pictures within Cerb. This allows an image to be associated with any record: workers, groups, contacts, email addresses, Virtual Attendants, etc.

Previously, this was only supported through the Gravatar plugin, which had several issues: it didn't work on intranets or behind firewalls, workers couldn't set images for other users, users were redirected to a third-party service, when the plugin wasn't in use we had no fallback, etc.

Internally, the profile picture service in Cerb works much like Gravatar -- images are requested through the /avatars/<context>/<id> path. Default images are available per record type (e.g. distinguishing between VAs and workers).

For people-based records (e.g. email addresses, contexts, workers), there are several silhouettes that are randomly used. If a gender is known (workers, contacts) then the appropriate default silhouettes are used.

The profile picture editor allows images to be imported and modified

When editing a record that supports profile pictures, an "avatar editor" popup is now available. This allows images to be uploaded or imported by URL, and then zoomed/panned/cropped.

710 profile picture editor.png

Profile pictures are now shown in many areas as a visual cue

The current worker's profile picture is now shown in the top right next to their worker menu.

710 profile picture worker menu.png

On ticket profiles and worklists, worker profile photos are shown for the 'Owner' field.

710 profile picture ticket owner.png

Profile pictures for workers, senders, and VAs are shown in the ticket timeline for messages, drafts, comments, and notes.

710 profile picture ticket timeline.png

Worker profile pictures are now shown in the recommendations and watchers popups.

710 profile picture watchers.png

If an email address doesn't have an avatar but it's assigned to an organization that does, that org's avatar will be displayed as a default.

710 profile picture org.png

The default avatars for contact records select gender appropriate silhouettes (if known).

710 profile picture gender.png

When using the avatar editor for a worker or contact profile photo, the Gravatar icon for that email address will be automatically suggested if it exists.

710 profile picture gravatar.png


Popup searches

The 'Search' menu in the top right now opens search results in a popup window rather than on an entirely new page. This improves usability by not requiring workers to open a new tab or leave their current page. Records of that type can also be created, updated, bulk updated, or deleted from the popup without leaving the current page.

710 search popups.png

Improved search menu usability

The global search menu in the top right is now an icon. This makes it stand out more from the other text-based options (i.e. workspaces/setup).

710 search menu.png

Placeholders in quick search

Quick search can use any placeholders available on the worklist. At minimum, this usually includes 'Current worker' placeholders. On Virtual Attendants actions that use worklists, this includes every placeholder on the behavior.

710 quick search placeholders.png

Contact-related records are indexed immediately after creation and modification

[CHD-4258] Worker, contact, address, and organization records will now be instantly search indexed after creation or modification. Previously, all records were search indexed asynchronously from the scheduler at intervals. This led to issues where a record was created but unable to be found with a quick search using the default filters.

Sort from quick search

The quick search feature on worklists now supports a 'sort:' field for filtering and sorting the results at the same time. The quick search menu now contains a '(sort)' section with sortable fields, along with an 'ascending' and 'descending' option for each field. A minus (-) sign can be manually prefixed to a field for descending sorts, like 'sort:-updated'. Sorting from quick search also allows sorting by fields that aren't columns on the worklist (like name, where it's a title rather than a column).

When selecting an item from the quick search menu, it will now close automatically. Previously this extra step was required every time.

Append filters with quick search rather than replacing

Prefixing a quick search query with a plus sign (+) will now add the new filters to the existing filters rather than replacing them.

New quick search filters

  • Added an 'inGroups:' filter to quick search for worker worklists.
  • Added a 'group' field to quick search for bucket worklists.
  • Added a 'bucket' field to quick search for ticket records.
  • Added a 'contact.id' filter to quick search on ticket worklists. This returns tickets where the given contact is one of the recipients with any of their associated email addresses.
  • Added a 'ticket.id' filter to quick search on address records. This returns addresses that are a participant on the given ticket.


Improved edit validation

An error is displayed when required fields are not provided.

When editing a ticket, an error will now be returned if the currently selected owner is not a member of the currently selected group. Previously, these tickets just became invisible to these owners and could be neglected.

710 peek edit validation.png

Added more built-in fields to worker records

Added new fields to worker records for improved personalization and automation: gender, date of birth, location, mobile number, and phone number.

710 worker fields.png


See who is using a workspace page

[CHD-2908] When editing a workspace page, a list of workers using the page is displayed.

710 workspace users.png

Workspace usability improvements

The "New record created" link that appears above a worklist now displays the record in a peek popup (when possible) rather than a new page.

710 worklist record created popup.png


Table summaries in dashboard chart widgets

[CHD-4122] Line and bar charts on dashboards can now also display a table of series values along with subtotals. Bar charts display a matrix table (series as columns with a common x-axis). Line charts display independent tables for each series, as they can have different ranges/units/scales on the same chart (e.g. tickets per year vs. messages per month). When configuring a chart widget, the options are: Image & Table, Image only, and Table only.

710 dashboard chart tables.png

Dashboard widgets can use quick search with placeholders to filter worklists

710 dashboard worklist quicksearch.png

When using worklist widgets on dashboards, an option is now provided to use a quick search with placeholders to set the filters. Previously, only the filters set on the worklist were used. Since many of those filters didn't support placeholders, that approach hindered many reporting options. These datasources are much more flexible now.

When using worklist datasources on dashboard widgets, an option is now provided to use a quick search with placeholders to set the filters. Previously, only the filters set on the worklist were used. Since many of those filters didn't support placeholders, that approach hindered many reporting options. These datasources are much more flexible now.

Current worker placeholders on HTML widgets

On workspace dashboards, Custom HTML widgets can now use the placeholders of the current workers, as well as the entire template scripting syntax.

710 dashboard html placeholders.png

Fixed week numbering on dashboard chart widgets

Fixed an issue with grouping widget chart data into 'weeks'. There were some inconsistencies between PHP and the database regarding how week numbering works (Sun/Mon as first day, 1st week contains Jan 1st or first Sun/Mon, etc).

Virtual Attendants

Virtual Attendants can determine the actor in Record Changed events

[CHD-3929] Virtual Attendant behaviors on the 'Record changed' event now have access to information about the current actor (app, role, group, worker, VA) that was responsible for the change. This is not always a worker, since worker activity can trigger VA activity (owned by other workers). The 'actor type' condition can be used to filter for activity by a specific type. The full set of placeholders for the actor are available; for instance, if the actor is a worker, then 'actor_title' and 'actor_full_name' placeholders are available.

710 va record changed actor.png

Virtual Attendants can use quick search to set variables

When setting list variables in Virtual Attendant behaviors, an option is now provided to use a quick search with placeholders to set the filters. Previously, only the filters set on the worklist were used. Since many of those filters didn't support placeholders, that approach hindered many automation workflows. It should be much easier to create dynamic automations now.

710 va worklist quicksearch.png

Virtual Attendants can create new attachments

Added a 'Create an attachment' action to Virtual Attendant behaviors. This allows the creation of entirely new attachment records, with options for file name, content type, and content. Binary files (e.g. ZIP, PNG, PDF) can be provided in base64 encoding. The resulting attachment meta can be written to a custom placeholder and added to an attachment list behavior variable (e.g. for attachment to outgoing messages). This enables workflows like sending personalized PDFs to contacts, sending license files, attaching custom reports, etc.

710 va create attachment.png

Virtual Attendants can search attachments and save results to behavior variables

Virtual Attendant behaviors can now use '(List) Attachment' behavior variables. This allows other actions to find or create attachments that can be used with the send email actions.

710 va attachment list vars.png

Virtual Attendants can attach files to outgoing messages from variables

The 'Send email' action on Virtual Attendant behaviors can now include '(List) Attachment' behavior variables.

The 'Send email to recipients' action on Virtual Attendant behaviors can now include '(List) Attachment' behavior variables.

710 va attachment list vars actions.png

Virtual Attendants can add recipients to tickets using variables

The 'Add recipients' action in ticket- and message-based Virtual Attendant behaviors can now use address-based list variables for the recipients to add to the current ticket.

710 va add recipients.png

Virtual Attendants can remove recipients from tickets

[CHD-4042] Added a 'Remove recipients' action to ticket- and message-based Virtual Attendant behaviors. Address-based list variables are accepted as input. The company that suggested this needed a way to easily remove certain internal worker email addresses that were added by 'Auto-add To/Cc recipients', unless they were the initial creator of the ticket. VAs can handle that situation easily while the exclusion list in 'Auto-add To/Cc' can't.

710 va remove recipients.png

Virtual Attendants can run custom behaviors for contact records

Implemented 'Custom contact behavior' events for Virtual Attendant automation on contact records.

710 va contact behaviors.png


Shared events between calendars

Calendars can now be datasources for other calendars. This allows calendars to share common events like office hours or holidays. Previously holidays had to be added to every calendar individually.

710 calendars shared.png


Shortcut for creating records from choosers

Choosers widgets now have the option of providing a shortcut for creating a new record, in the form of a (+) button next to a form field. Previously, new records had to be added from the chooser in several steps (open the chooser popup, search, click the add button in the worklist, set fields and save, select the new row, save the chooser). This can now be accomplished with the new (+) button directly opening the edit popup and creating a chooser bubble when it's saved.

710 chooser create shortcut.png

Chooser autocomplete improvements

Chooser widgets can now provide an autocomplete input box that is only visible when a value isn't currently set. The autocomplete input box disappears if a record is selected, and when the last existing record is removed then the autocomplete box reappears.

710 chooser autocomplete ifnull.png

When using the create shortcut on a contact chooser to create a new contact record from an existing email address popup, the email address and its organization (if set) will be automatically set on the new contact to save time. Previously, this information had to be tediously input twice.

710 chooser create contact.png

The contact chooser now displays a person's name, title, organization, and profile picture in the autocomplete menu.

710 chooser contacts.png

Autocomplete choosers on email address records now show profile pictures, contact names, and the associated organization in search results. Previously, the results only showed the email address.

710 chooser emails.png

Autocomplete choosers on org records now show the org name and profile picture. Previously, the results only showed the name.

710 chooser orgs.png

Autocomplete choosers on worker records now show name, title, and profile picture. Previously, the results only showed the worker's name.

710 chooser workers.png

When using autocompletion for email addresses in input fields, the address record fulltext index is now used for matches. This is much faster for searching partial email addresses, first/last names, or organization names. When the autocomplete phrase contains a special email character (period, underscore, @) then a suffix-wildcard match will be used on the email address (e.g. customer@*). When the autocomplete phrase starts with an @, then the autocomplete will match hosts in email addresses (e.g. @gmail). As previously, the results are sorted with the most frequently contacted first.

710 chooser autocomplete email formats.png

Choosers can provide default quick search filters

Abstract choosers can now be opened by other functionality with a default quick search query. For instance, if you need to select a contact from a given organization, the contact chooser can open with an existing filter for the organization.

710 chooser query default.png


SMTP errors are now logged

[CHD-3434] The Devblocks mail service now keeps track of SMTP errors. The various areas of mail functionality can refer to this for more useful error messages.

When a mail transport fails to deliver a message (e.g. SMTP failure), this will now be recorded in that transport's Activity Log.

710 mail log failure.png

When a message fails to deliver on a ticket and generates a draft, the draft will now contain a sticky note with more information about the last error.

710 mail draft log.png

Ticket timeline improvements

When viewing messages in the ticket timeline, the associated contact, title, and organization of a sender is now displayed more clearly. Clicking any of these elements will display their record's card in a popup. If the sender is a worker, their card will be displayed when clicked as well. Previously, only the sender address was displayed, and clicks always opened the address popup (even for worker senders).

710 mail timeline.png

Comments on draft records are now displayed in the conversation timeline on a ticket.

710 mail draft notes.png

Improved the display of the 'pending drafts' warning on the ticket conversation timeline.

710 mail pending drafts.png

In ticket conversations the labels for drafts, comments, and notes are now highlighted more clearly.

710 mail timeline comments notes drafts.png

Improved the style of drafts in the ticket timeline so they are consistent with messages and comments.

710 mail timeline drafts style.png

Improved the style of sticky notes in the ticket timeline.

710 mail timeline sticky notes.png

The expand and collapse icons for messages in the ticket timeline are now buttons rather than text. This is more consistent with the rest of the UI.

710 mail timeline msg icons.png

The permalink and delete icons displayed on comments are now buttons rather than text labels. This is more consistent with the rest of the UI.

710 mail timeline comment icons.png

Mail header usability

When toggling 'full headers' from a mail timeline, the headers are now always sorted in alphabetical order. Previously, the headers were displayed in an arbitrary order.

710 mail timeline headers.png


Changed the permanent list of 'recipients' on tickets to 'participants' to differentiate them from other forms of recipients (Cc:, people who receive copies of messages sent by VAs, etc).

710 mail participants.png

Knowledgebase chooser when replying

When replying to a ticket, the 'Knowledgebase' button now opens a search popup rather than a chooser. It was confusing people that you could select articles but the popup didn't do anything with them (like inserting public URLs).

710 mail reply kb chooser.png


Virtual Attendant shortcut icon

Improved the style of the Virtual Attendant button on profiles. Previously it was an ambiguous-looking remote control icon; now it uses the standard Cerb mascot that represents Virtual Attendant automations.

710 profiles va button.png


Improved usability for notifications

Clicking on the notifications alert in the top right will now open the notifications in a popup rather than leaving the current page to switch to the worker's profile view. This saves extra clicks when viewing and clearing notifications. The new popup also automatically opens the subtotals by event type.

710 notifications popup.png

Support Center

Support Center profiles

Added a new 'Profile' page to the My Account section in the Support Center. This provides a place for contacts to manage their own details (name, title, gender, location, dob, phone, etc).

710 sc my profile.png

The Support Center is now based on contact records

The Support Center plugin now uses the new Contact records for authentication and profiles, which are more tightly integrated with the worker UI as well. The old Contact Person records are automatically migrated to Contacts.

Profile pictures in the Support Center

Support Center users can now upload their own profile pictures (when enabled) from the 'My profile' page.

710 sc avatars.png

Support Center aesthetic improvements

Improved the style and layout of the Ticket History pages in the Support Center. These now display messages in a format very similar to the worker UI (profile picture, sender name/org/title info, received/sent badges, etc).

710 sc ticket history.png

Removed the old icons in the Support Center in favor of font-based Glyphicons (as was done in the worker interface for 7.0). The font-based icons are more flexible when customized via CSS (e.g. color, size, animations, etc).

710 sc glyphicons.png

Support Center dependencies

  • Updated the jQuery library from 1.4 to 1.11.3 in the Support Center plugin.


  • Fixed an issue with grouping report data into 'weeks'. There were some inconsistencies between PHP and the database regarding how week numbering works (Sun/Mon as first day, 1st week contains Jan 1st or first Sun/Mon, etc).



  • Fixed a few minor potential XSS vulnerabilities in various scripts. Most could only have been abused by workers and not outside actors (e.g. creating a group with a functioning script for a name and navigating to an obscure part of the UI).

MySQL strict mode compatibility

  • Fixed various issues when MySQL is running in strict mode.


  • Permalink URLs now use dash (-) rather than underscore (_) to replace spaces and special characters. This is consistent with any prefixed record IDs (rather than mixing dashes and underscores in the same URL).

Removed length limits on some fields

  • Removed the arbitrary 32-character length limit on contact/worker first and last names.
  • Removed the arbitrary 64-character length limit on worker titles.
  • Removed the arbitrary 128-character length limit on worker email addresses.
  • Removed the arbitrary 32-character length limit on group and bucket names.


  • Updated the Parsedown library from 1.5.1 to 1.5.3. This release fixes some reported formatting issues with HTML style <BR> line breaks.

Developers / Plugins

  • Implemented a jQuery plugin for abstract peek popup handling in Devblocks. Previously, popups were opened by using genericAjaxPopup() directly, along with options for width/layer/etc. This was pretty redundant. Now, any element can trigger a popup to open using $selector.cerbPeekTrigger(). The options are passed in the DOM using HTML5 data attributes (data-context, data-context-id, data-layer, data-edit, data-width). Only the context is required, and the other options will use default values if left blank. Widths can be provided in percentages now rather than absolute pixels. The layer name will be automatically generated if blank to be unique for a given record, so multiple popups of the same type may now be opened simultaneously. Peek popups opened in this manner also provide more flexibility using jQuery events and listeners (cerb-peek-opened, cerb-peek-saved, cerb-peek-deleted).
  • Implemented a jQuery plugin for abstract search popup handling in Devblocks. Previously, searches redirected to the /search/ pages (usually in a new browser tab), and the filters were set by back-end controllers in a rather redundant way. Now, any element can trigger a search popup to open using $selector.cerbSearchTrigger(). The options are passed in the DOM using HTML5 data attributes (data-context, data-query, data-layer). The query option provides the quick search filters to open the search popup with, which will be run immediately. No custom code is required now to create search popups in this manner. Each search popup has a unique layer, so any number of search results can be displayed or nested at once. Search popups trigger a 'cerb-search-closed' event when closed.
  • Implemented a jQuery plugin for abstract chooser popup handling in Devblocks. Previously, choosers were implemented redundantly. Now, any element can trigger a chooser popup to open using $selector.cerbChooserTrigger(). The options are passed in the DOM using HTML5 data attributes (data-context, data-field-name, data-query, data-single, data-autocomplete). The context determines which type of records are displayed. The field-name is the name of the hidden form element that contains the IDs of the selected records. The query is the default quick search filters to apply to the chooser, which can be generated from the current record -- for instance, if choosing an owner for a ticket, possible workers can be filtered to only those who are members of the ticket's current group. The 'single' option determines if the chooser should close after a single selection has been made; otherwise, multiple selections are allowed. The autocomplete option creates a search box alongside the chooser button for making quick selections without having to open the chooser (for instance, selecting an organization or worker by the first few letters of their name).
  • The genericAjaxGet and genericAjaxPost helpers now always handle responses (fade out/in, render output into container) even when a third-party success callback is given. Previously, any time a callback was provided it had to implement response handling by itself. Now those callbacks can simply perform their own actions (e.g. closing the popup).
  • In a plugin.xml manifest, an extension <param> entity can contain multiple <value> child entities. Previously this was limited to one. Additionally, the <value> entities can provide a 'key' attribute to be associative rather than indexed. This makes it easier to store complex metadata with extensions.
  • In plugin scripts, the genericAjaxPopup() function may now specify the width option as a percentage of the current browser window width, where previously only fixed pixels widths were available. This should improve usability by taking advantage of additional screen space. For instance, search popups and choosers now open to 90% of the browser width rather than an arbitrary 500-750 pixels.
  • Implemented DevblocksPlatform::extractArrayValues() for creating a new array for a specific key across all the given arrays. For instance, this is used in worklists when we want to bulk load all the referenced records for a column in a single query (e.g. all distinct address.contact_id).
  • Implemented Devblocks.uniqueId() in the Javascript API. This is used to generate request-unique IDs for abstract DOM elements.
  • The new create shortcut on choosers can be enabled with the 'data-create' attribute. A value of 'if-null' will only show the create shortcut when no record is selected in the chooser.
  • The abstract chooser functionality now automatically takes care of the remove icons for the default values in the chooser container. Previously, these had to be added manually along with the code to remove the bubble. Choosers can now listen for items being removed from the list and respond accordingly.
  • Abstract choosers can have a conditional autocomplete helper. This is controlled by the data-autocomplete="if-null" attribute in the chooser trigger. The autocomplete will be hidden after a selection is made, and shown when the container is empty.
  • Implemented a new 'Properties Grid' UI control (.cerbPropertyGrid). This automatically aligns any number of properties into a grid. A desired column width is given in the 'data-column-width' attribute, and any properties wider than that are automatically resized into a multiple of the width to fit the grid. Narrower properties are resized to the column width. Renderers are provided for the built-in data types, including record links (with avatars and card popups), so only a few specialized fields need to be directly implemented on a card.

Maintenance updates


Cerb (7.1.1) is a maintenance update released on December 23, 2015; it contains 37 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [CHD-4262] [Profiles/Ticket] Fixed an issue that prevented owners from being removed on the ticket edit popup.
  • [Profiles/Ticket] Fixed an issue on ticket profiles where changing the participants rendered them unclickable as peek popups.
  • [Profiles/Ticket] The participants popup on ticket profiles now uses a single email address chooser instead of multiple controls.
  • [CHD-4261] [Choosers/Workers] Worker choosers now display a 'me' shortcut to quickly set the field to the current worker. This existed previously on some forms but was implemented redundantly.
  • [Virtual Attendants/Simulator] Fixed an issue where the Virtual Attendant simulator wasn't showing the 'Target:' text for message-based events.
  • [Virtual Attendants/Simulator/Recipients] Fixed an issue in the Virtual Attendant simulator with message-based events using the 'Remove recipients' action. The simulator output for this action wasn't showing up.
  • [Virtual Attendants/Tickets] Fixed an issue in ticket-based and message-based Virtual Attendant behaviors where the 'Spam training' and 'Status' conditions only showed a text box rather than a picklist of possible values (e.g. open, waiting, closed, deleted).
  • [Avatars/Chooser/Gravatar] When setting a profile picture on a record, only valid suggested images will be shown. For instance, if there isn't a result in Gravatar for a given email address then no icon will be shown at all, rather than the default Gravatar logo.
  • [Avatars/Contacts/Gravatar] When setting a profile picture on a contact, Gravatar pictures will be checked for all of the contacts' email addresses (previously, only the primary was checked). Additionally, the recommendations now work when adding a new contact as well.
  • [Avatars/Org/Gravatar] When setting a profile picture on organization records, Gravatar will be checked for images for the top 10 email addresses of that organization that don't have a contact assigned (e.g. support@, sales@, etc).
  • [Avatars/Workers/Gravatar] When adding a new worker record and setting the profile picture, the Gravatar suggestion will now work properly for the given email address.
  • [Profiles/Tickets] Fixed an issue where non-admin workers couldn't edit tickets from profiles.
  • [Worklists/Tickets/Bulk] Fixed an issue with the new choosers when bulk updating ticket worklists. If org/owner values were not provided then they were cleared on the selected records.
  • [Worklists/Tickets/Piles] Fixed an issue with the pile sorter on ticket worklists. It wasn't refreshing the worklist after running.
  • [Worklists/Addresses/Bulk] Added a new organization chooser to bulk update on email address worklists. This includes the 'create' shortcut and improved autocompletion.
  • [Worklists/Tickets/Bulk] Added new worker choosers to bulk update on ticket worklists when adding/removing watchers. This includes the 'me' shortcut and improved autocompletion.
  • [Workers/Settings/Avatars] Workers can now edit their own account fields from the Settings page (name, title, gender, location, phone, mobile, DOB, @mention, and photo). Previously, an administrator was required to change any of these details.
  • [UI/Aesthetics] Date input fields now display a calendar icon to the right, which better indicates what that button does. Previously, it was a vague ellipsis (...).
  • [Platform/Choosers] Fixed an issue where the new choosers didn't allow multiple record selection where enabled. This required the chooser to be re-opened to add each new record. This mainly just affected ticket 'bulk update' when adding/removing watchers.
  • [Virtual Attendants/Simulator/Calendar] In Virtual Attendants, added the 'Also create records in simulator mode' option to the 'Create calendar event' action.
  • [Virtual Attendants/Calendars] In Virtual Attendants, added the 'Add object to list variable' option to the 'Create calendar event' action. This allows other behaviors to run against the newly created record.
  • [Workers/Preferences] Fixed an issue that prevented workers from verifying new alternative email addresses on their accounts.
  • [Choosers/Autocompletes] Fixed an issue where some email address autocomplete fields inserted a numeric ID rather than the actual email address.
  • [Choosers/Autocomplete/Email] Email addresses that are marked as defunct or banned will no longer be suggested in autocomplete fields.
  • [CHD-4269] [Import] When previewing an import from CSV, email address and organization records are no longer automatically created when they don't already exist. They are now only created on an actual import.
  • [Contacts/Worklists/Import] When importing contact records from CSV, custom fields and fieldsets are now available to be imported into.
  • [Cards/Messages] Implemented card popups for message records. These now display the details (and preview) of a single message, and they contain a link to their ticket for viewing everything else.
  • [Cards/Tickets/Messages] When previewing message content from ticket and message cards, any custom fields on those messages are now displayed in the preview.
  • [Virtual Attendants/Performance] Fixed an inefficiency in the way Virtual Attendants check conditions in outcomes. This was causing some behaviors with hundreds of conditions to take an unacceptable 20+ seconds to run, even though the underlying checks themselves took milliseconds. The problem was caused by a complex object that was built from scratch every time a condition was checked; and that object is now properly cached and reused. In one particular environment, this resulted in a 10,000% performance improvement (from 20000ms to 200ms per run of the behavior).
  • [Virtual Attendants/Simulator] When running the Virtual Attendant simulator, a "spinner" is now shown while waiting for the results and the 'Simulate' button temporarily disappears. Previously, nothing happened until the output was ready, which could look like nothing was happening at all.
  • [Virtual Attendants/Simulator/Tasks] In Virtual Attendants, added the 'Also create records in simulator mode' option to the 'Create task' action.
  • [Virtual Attendants/Tasks] In Virtual Attendants, added the 'Add object to list variable' option to the 'Create task' action. This allows other behaviors to run against the newly created record.
  • [Virtual Attendants/Tasks] In Virtual Attendants, added the 'Link to:' option to the 'Create task' action. This allows the newly created record to be linked to other records using placeholders and behavior variables.
  • [Virtual Attendants/Simulator/Tickets] In Virtual Attendants, added the 'Also create records in simulator mode' option to the 'Create ticket' action.
  • [Virtual Attendants/Tickets] In Virtual Attendants, added the 'Add object to list variable' option to the 'Create ticket' action. This allows other behaviors to run against the newly created record.
  • [CRM/Opportunities] Added the new email address chooser to the opportunities edit popup. Cleaned up the two-part "Amount" field into a single input box. Added card popups for email and org to the opp profile page.
  • [Virtual Attendants/Opportunities] Added a 'Create opportunity' action to Virtual Attendant behaviors. This allows opportunity records to be created automatically, along with custom fields and record links, and the new record can be appended to a variable to run additional behaviors on it.


Cerb (7.1.2) is a maintenance update released on January 5, 2016; it contains 28 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [CHD-4246] [Profiles/Ticket/Comments] When following a message or comment permalink on a ticket profile, the 'Timeline' tab will now always be selected. Previously, the selected tab was whatever had focus last.
  • [Virtual Attendants/Groups/Buckets] In Virtual Attendants, group and bucket placeholders are now available for the reply-to address (e.g. group_replyto_address, bucket_replyto_address). These include all the extra fields on address records as well.
  • [Setup/Mail] Fixed a PHP/MySQL notice when deleting mail transports.
  • [Watchers] Fixed an issue that prevented workers from removing watchers on non-ticket records from the popup on worklists.
  • [Choosers/Usability] The new chooser widget will no longer auto-focus the first result in the dropdown menu. This resolves the issue where tabbing away from the field (such as toward the (+) button) would select the first item.
  • [Profiles/Photos] Fixed some inconsistencies in the caching of profile pictures. This resolves various issues where different default pictures are shown throughout the UI for the same record.
  • [Profiles/Pictures] Fixed an issue when adding a profile picture using the 'Get image from URL' option with an internal Cerb URL (another avatar, etc). This was being blocked in the proxy by the lack of the session cookie and CSRF header token.
  • [Profiles/Pictures] When a default silhouette is displayed for an address, contact, org, or worker record, the same image will always be used for a given record. Previously, these default images were randomized, and every time the record was updated the default image could confusingly change.
  • [Profiles/Pictures/Monograms] When displaying a default profile picture for address, contact, or worker records, a monogram image is now created with their initials. Previously, a random gender-specific silhouette picture was displayed, and if the gender was unknown then the image could be of either gender. The monogram images have randomly colored backgrounds, which provide a much more helpful visual cue of different authors when viewing conversation histories. The silhouette default images can still be used as an option in Setup->Configure->Avatars.
  • [Profiles/Pictures/Contacts] When a contact's profile picture is changed, the cache is now cleared for all of their email address records. Previously, the address records were cached separately and these could show the previous image until the cache expired.
  • [Profiles/Pictures/Orgs] When an org's profile picture is changed, the cache is now cleared for all of their non-contact email address records. Previously, the address records were cached separately and these could show the previous image until the cache expired.
  • [Profiles/Pictures] The default silhouette images are now available in the profile picture editor popup. These can be used in lieu of a personalized image. Previously, these images were assigned randomly and they couldn't be easily changed.
  • [Profiles/Pictures/Editor] The profile picture editor now provides the option to specify a background color. When an image is fetched or uploaded that uses transparency, its background color can be changed in real-time. Previously, these images were always saved with a white background.
  • [Profiles/Pictures/Editor] The profile picture editor now provides an option to create a new image (instead of fetching or uploading one). Any text can be provided as a label to be drawn on the new image, including Emoji icons. This is particularly useful in OSX on Macs with the Ctrl+Cmd+Space keyboard shortcut for inserting full-color, high-resolution Emoji icons. This makes it very easy to create a personalized avatar image from scratch.
  • [Choosers/Usability] When setting a worker in a chooser, the 'me' shortcut is now on the left of the autocomplete input.
  • [CHD-2898] [Mail/Attachments/Reply] Files can now be dragged from the local filesystem and dropped into the 'Attachments:' section of the reply form. The drop zone will be highlighted with a green dashed border.
  • [Mail/Attachments/Compose] Files can now be dragged from the local filesystem and dropped into the 'Attachments:' section of the compose form. The drop zone will be highlighted with a green dashed border.
  • [Choosers/Autocomplete/Virtual Attendants] Choosers with autocompletes are now able to show placeholders in the menu. This is particularly useful for Virtual Attendant behaviors, since variables may be used in place of specific records.
  • [Plugins/Servers/Cards] Implemented card popups for server records.
  • [Plugins/Servers/Choosers/Autocomplete] Implemented autocomplete for server records in choosers.
  • [Plugins/Servers/VAs] Implemented a 'Create server' action in Virtual Attendant behaviors.
  • [Plugins/Domains/Virtual Attendants] Implemented a 'Create domain' action in Virtual Attendant behaviors. This action permits variables for the 'Server' and 'Contacts' fields, can set custom fields, and can save the new domain record into a behavior variable.
  • [Plugins/Domains/Cards] Implemented card popups for domain records.
  • [Plugins/Domains/Choosers] Implemented autocomplete for domain records in chooser fields.
  • [Plugins/Calls/Virtual Attendants] When using the 'Create call' action in Virtual Attendant behaviors, a 'Create records in simulator' option is now available.
  • [Plugins/Calls/Virtual Attendants] When using the 'Create call' action in Virtual Attendant behaviors, a 'Link to:' option is now provided that can accept multiple records and placeholders. Previously this was limited to a single target with the 'On:' option.
  • [Plugins/Calls/Virtual Attendants] When using the 'Create call' action in Virtual Attendants, the newly created record can be set in a behavior variable for further automation.
  • [Plugins/Assets/Virtual Attendants] Added a 'Create asset' action to Virtual Attendant behaviors. This can set fields and custom fields, add comments, set links, add the newly created record to a variable for further automation, etc.


Cerb (7.1.3) is a maintenance update released on January 25, 2016; it contains 16 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [Mail/HTML] Added a new section in Setup->Mail->Settings for "Display HTML Messages" with the option "Don't clean Microsoft Office formatting". This is useful in environments that frequently use Microsoft software (Exchange, Outlook) and have issues with the way Cerb currently sanitizes HTML messages.
  • [Mail/Timeline/Usability] When viewing a timeline on a ticket profile, the 'Subject:' headers are now displayed for messages again.
  • [Profiles/Comments/Usability] When viewing a comment on a profile, the permalink button can now be right-clicked to copy the link without having to navigate to it immediately.
  • [Mail/Routing] Fixed an issue in Mail Routing Rules (Setup->Mail->Routing) where headers weren't matched properly if they occurred multiple times (like 'Received:').
  • [Virtual Attendants] Fixed a PHP notice when using the 'Create task' and 'Create ticket' actions under certain situations in Virtual Attendants.
  • [Web-API/Mail/Reply] Fixed a bug in the /tickets/reply.json API request. This could improperly report "You do not have write access to this ticket" in some situations.
  • [CHD-4279] [Profiles/Organization] Fixed an issue where clicking the edit button on an organization profile opened up the card popup first. This is an unnecessary extra step.
  • [CHD-4280] [Profiles/Orgs/Usability] On organization profiles, the 'Contacts' tab has been removed in favor of 'Contacts' and 'Email Addresses' search buttons in the properties summary. These buttons are the same as on cards, and they open a search popup rather than requiring the current profile tab to change. This also fixes the inconsistency on org profiles where the tab was called 'Contacts' while displaying email address records instead.
  • [CHD-4277] [Mail/Compose/Watchers] Fixed an issue on the mail compose popup where only the first watcher was added to the new ticket.
  • [CHD-4167] [Mail/Worklists/Explore] When exploring a ticket worklist, the first record will always start with the 'Timeline' tab. Any subsequent records will use the most recently selected tab.
  • [Profiles/Usability] When a profile focuses a specific tab based on the URL (e.g. /profiles/ticket/ABC/links), that tab will become the new default tab for future records.
  • [CHD-4278] [Mail/Worklists/Piles/Usability] Fixed an issue on ticket worklists where the pile sorter actions didn't line up properly with the categories.
  • [CHD-4296] [Profiles/Orgs] Fixed an issue where organization profiles would attempt to display when presented with invalid IDs.
  • [CHD-4276] [Worklists/Workers] On worker-based worklists, fixed an issue with displaying and filtering the 'Email Address' field.
  • [CHD-4245] [Virtual Attendants/Notifications] In Virtual Attendants, fixed an issue with the 'Create notification' action when using external URLs.
  • [CHD-4267] [Mail/Profiles/Timeline] On ticket profiles, fixed an issue where the 'Add to recipients' button resulted in a list of Participants which was no longer clickable.


Cerb (7.1.4) is a maintenance update released on February 15, 2016; it contains 12 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [CHD-4301] [Support Center/Contacts] Fixed an issue that prevented account registration in the Support Center.
  • [CHD-4300] [Localization/VAs/API] Fixed an issue where some multibyte characters were being corrupted in placeholder labels. This affected functionality like the REST API, Virtual Attendant behaviors, and snippets. Technical note: The non-multibyte ucfirst() function was being used.
  • [Platform] When serving the "Not Found (404)" error page, a Cerb 6.x logo was shown when no custom logo was configured. This now shows the non-versioned logo of 7.x+.
  • [Virtual Attendants/Variables] In Virtual Attendants, fixed an issue with the 'Run behavior' and 'Schedule behavior' actions when setting numeric parameters on the target behavior using placeholders. These values were being set to 0 regardless of the placeholder script.
  • [Virtual Attendants/Custom Fields/Variables] In Virtual Attendants, picklist custom fields can now be set using text variables. Previously, picklist custom fields could only be set to one of the existing values from a list, which complicated some advanced workflows. For instance, a picklist with the options Red, Green, and Blue, will now also show '(variable) Color' as an option. The value of the variable is compared to the picklist options in a case insensitive manner. Any match uses the picklist version of the option, and the lack of a match ignores setting the custom field.
  • [CHD-4310] [Records/Create/Watchers] Fixed a defect when adding multiple watchers while creating certain records (e.g. orgs, tasks) where only the first watcher was added to the record.
  • [Platform/PHP/Code Cleanup] Made some minor tweaks for PHP7 compatibility.
  • [Platform/Installer] Fixed an issue in the guided installer in some environments that could display a blank page and require a manual refresh to continue.
  • [CHD-2755] [Support Center] When viewing tickets in the Support Center, a new 'Edit' button enables contacts to modify the subject, status, and participants of their tickets. Previously, only the status could be changed.
  • [Support Center/Activity Log/Participants] When a contact adds or removes participants on tickets in the Support Center, these actions are now logged in the Activity Log.
  • [Support Center/Activity Log] Activity Log entries from the Support Center now record the actor as a Contact rather than an Email Address.
  • [Installer/Security] The installer was creating a few ./storage subdirectories with 0774 permissions (owner/group read-write, world readable). These are now created as 0770 (without world readable).


Cerb (7.1.5) is a maintenance update released on March 7, 2016; it contains 6 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [Support Center/Contact] In Support Center portals, Contact Forms can now be configured to allow a 'Cc:' field which adds additional contacts to the ticket's participants list.
  • [Support Center/Security] Fixed an issue in Support Center contact forms where a form could be submitted multiple times on the same session using the same CAPTCHA.
  • [CHD-4326] [Worklists/Tickets] When using the 'c' shortcut to close a ticket from a worklist or profile page, an existing 'reopen at' date is no longer deleted. This was causing issues when transitioning from 'waiting' to 'closed' where the reopen was still expected.
  • [CHD-4321] [Profiles/Ticket/Notes] Fixed an issue on ticket profiles where sticky notes only displayed action buttons (permalink/delete) for the first note.
  • [Profiles/Ticket/Notes] Fixed an issue on ticket profiles where the profile button of a newly added sticky note didn't work properly.
  • [CHD-4338] [Mail/Notes] Fixed an issue when replying to a message and adding a sticky note at the same time. When the sticky note editor opened it was replacing the contents of the reply form. Sticky notes are now edited in a popup.


Cerb (7.1.6) is a maintenance update released on June 9, 2016; it contains 13 features, fixes, and usability enhancements from community feedback covering the recent 7.1 update. You can follow these instructions to upgrade.

  • [Virtual Attendants] Fixed an issue in Virtual Attendant 'Create task' and 'Create ticket' actions. When using the 'Run in simulator' option, an error about "$this" was being displayed.
  • [CHD-4299] [Worklists/Export] Fixed an issue when exporting ticket worklists. The 'closed date' column was always displaying dates at the start of the Unix epoch (1969/1970).
  • [Virtual Attendants/Usability] Fixed an issue with the 'Set (date) variable' action on Virtual Attendants. The action block had a fixed height that required scrolling when toggling to 'Calendar availability' from 'Placeholders'.
  • [Virtual Attendants/Calendars] Fixed an obscure issue with the 'Set (date) variable' action in Virtual Attendants. If an availability calendar ended with an available block (rather than a busy block) and that block was needed to advance the given duration, the target date failed to generate properly.
  • [Debug] Fixed a bug on the '/debug/report' page that prevented the 'Stats' counts from displaying properly.
  • [Virtual Attendants] In Virtual Attendants, added the 'Send Email' action to 'New notification for me' behaviors.
  • [Virtual Attendants] Fixed an issue with 'New notification for me' behaviors in Virtual Attendants. The 'Send email to notified worker' action wasn't sending mail properly.
  • [Virtual Attendants/Recipients] In Virtual Attendant behaviors, fixed an issue with the 'Add Recipients' and 'Remove Recipients' actions where commas within the friendly name of an email address interfered with parsing inputs (e.g. "Last, First"). This could lead to @localhost addresses being added instead.
  • [Virtual Attendants/Behaviors] Virtual Attendant behaviors that used the 'sender_full_name' condition were misbehaving since 7.1. The name fields moved to contact records. The 'sender_full_name' field will now fallback gracefully to the contact info.
  • [Worklists/Messages] On message-based worklists, a "marquee" message can now be displayed above the list. Generally these are used for providing a link to newly created records, but they are also used by other functionality.
  • [CHD-4352] [Support Center/Contact] Fixed an issue where Support Center contact forms weren't enforcing required fields.
  • [Support Center/Contact] In Support Center contact forms, when the subject field is editable by clients then it no longer defaults to the contact situation. Instead it is shown as a suggestion. Many people provided feedback that their clients weren't providing subject summaries when a default value existed, and if they wanted all the subjects to be the same then they wouldn't have made them editable.
  • [Virtual Attendants/Behaviors] When a Virtual Attendant behavior includes an invalid condition (e.g. one that was previously changed or removed) then the behavior will always fail. Previously, invalid conditions were skipped, which could result in actions unintentionally taking place.