anchor.diff:  
   image::task-domain.png[role="thumb"]
   
  +=== CrmTask
  +
  +[options="header"]
  +|===
  +| Property          | Type        | Description
  +| number            | String      | The task's natural ID
  +| startTime         | Date        | Start time
  +| endTime           | Date        | End time
  +| alarmTime         | Date        | Alarm/reminder time
  +| busy              | Boolean     | Show as busy in calendar
  +| hidden            | Boolean     | Hide from calendar
  +| displayDate       | String      | Custom date format, typically used when duration spans multiple days, i.e. "4-6 October"
  +| scope             | String      | Scope is typically used when duration spans multiple days, i.e. "3 days"
  +
  +| username          | String      | User that "owns" this task
  +| name              | String      | Name/Title for the task
  +| description       | String      | A longer description of the task (max 2000 characters)
  +| location          | String      | Location can be the name of a conference room, venue or a street address
  +| priority          | Integer     | Task priority, 0-100 where 0 is lowest and 100 is highest priority
  +| complete          | Integer     | Task completion percent (0-100)
  +| type              | CrmTaskType | Type of task
  +| ref               | String      | Reference identifier (entityName@id) if the task is connected to a domain instance
  +| address           | CrmEmbeddedAddress | Extended address information, if location is not enough
  +
  +| referenceProperty | String      | Used by dynamic dates
  +| offsetType        | Integer     | Used by dynamic dates
  +| offset            | Integer     | Used by dynamic dates
  +
  +| alarms            | Integer     | Number of alarms triggered for this task
  +| alarmType         | Integer     | Type of alarm set
  +| alarmOffset       | Integer     | Alarm offset in minutes from startTime
  +
  +| isRecurring       | Boolean     | True if this task is recurring
  +| recurType         | String      | ["daily", "weekly", "monthly", "yearly"]
  +| recurInterval     | Integer     | Example: If recurType is "weekly" and recurInterval is 1, task will repeat every week
  +| recurUntil        | java.sql.Date | Task will repeat until this date
  +| recurCount        | Integer     | Task will repeat this many times
  +| sourceTask        | CrmTask     | Back link to original recurring task this task was created from
  +|===
  +
  +
   == CrmTaskService
   
  -The +CrmTaskService+ provides methods for task management.
  ++CrmTaskService+ provides lots of useful methods for task management.
   
   === Create a task
   
  -To create a new task you use +crmTaskService.createTask(Map values, boolean save)+. The only mandatory properties in +CrmTask+ are +name+, +type+, +startTime+ and +endTime+.
  -Name is title of the task and type specifies the task type. Start time and end time can be set in a few different ways,
  -the most common way is to set them both to +Date+ instances. Another option is to set +startTime+ and +duration+ in minutes.
  +To create a new task you use +crmTaskService.createTask(Map values, boolean save)+. Mandatory properties in +CrmTask+ are +name+, +type+, +startTime+ and +endTime+.
  +Name is the title of the task and is displayed in lists and reports. Type specifies the task type and must exist prior to creating a task.
  +Start time and end time can be set in a few different ways, the most common way is to set them both to +Date+ instances.
  +Another option is to set +startTime+ to a +Date+ instance and +duration+ in (int) minutes.
   Setting the transient property +duration+ will set +endTime+ automatically.
   
   [source,groovy]
  
positive.code: def task = crmTaskService.createTask(number: 42, name: "Call Sam and schedule meeting", type: type, startTime: new Date() + 1, duration: 30, true)
  ----
  
  == License
  
  {license}
  
negative.code: - Time reporting
  - Event logging
  
  == Domain Model
  
  In the center of the domain model is the +CrmTask+ domain class. It has a reference to +CrmTaskType+ that specifies
  what type of task it is (phone call, meeting, training, work item, etc.)
  