anchor.diff:  | CrmTask.ALARM_CUSTOM_3     | 12    | Application defined alarm type
   |===
   
  +The following application code listens for the +crmTask.alarm+ event and sends an email to the task owner.
  +Email subject will be the task name and email body will be the task description.
  +
  +[source,groovy]
  +.MyAlarmService.groovy
  +----
  +@Listener(namespace = "crmTask", topic = "alarm")
  +def alarm(data) {
  +    TenantUtils.withTenant(data.tenant) {
  +        def task = crmTaskService.getTask(data.id)
  +        def user = crmSecurityService.getUser(task.username)
  +        if (task) {
  +            sendMail {
  +                to user.email
  +                subject task.name
  +                body task.description
  +            }
  +        } else {
  +            log.error "Cannot find CrmTask with id [${data.id}]"
  +        }
  +    }
  +    null
  +}
  +----
  +
   == License
   
   {license}
  
positive.code: 
  === CrmTask
  
  [options="header"]
  |===
  | Property          | Type        | Description
  | number            | String      | The task's natural ID
  
negative.code: To set an alarm for a task you just have to set two properties on the task instance. Set +alarmTime+ to a +Date+ instance and +alarmType+ to an +Integer+.
  The +CrmTask+ domain class defines +Integer+ constants for common alarm types.
  
  [options="header",cols="40,10,50"]
  |===
  | Constant                   | Value | Description
  | CrmTask.ALARM_NONE         |  0    | No alarm will be triggered
  