<?xml version="1.0"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-calext-ical-tasks-04" category="std" ipr="trust200902" consensus="true" updates="5545" submissionType="IETF" xml:lang="en" version="3" >
  <front>
    <title abbrev="iCalendar tasks">Task Extensions to iCalendar</title>
    <seriesInfo value="draft-ietf-calext-ical-tasks-04" status="Standard" stream="IETF" name="Internet-Draft" asciiName="Internet-Draft"></seriesInfo>
    <seriesInfo name="" value="" status="full-standard"></seriesInfo>
    <author fullname="Adrian Apthorp">
      <organization>DHL Express</organization>
      <address>
        <postal>
          <street ascii="Fritz-Erler-Str. 5">Fritz-Erler-Str. 5</street>
          <city ascii="Bonn">Bonn</city>
          <country ascii="Germany">Germany</country>
        </postal>
        <email>adrian.apthorp@dhl.com</email>
        <uri></uri>
      </address>
    </author>
    <author fullname="Michael Douglass">
      <organization>Bedework Commercial Services</organization>
      <address>
        <postal>
          <street ascii="226 3rd Street">226 3rd Street</street>
          <city ascii="Troy">Troy</city>
          <region ascii="NY">NY</region>
          <country ascii="United States of America">United States of America</country>
        </postal>
        <email>mdouglass@bedework.com</email>
        <uri></uri>
      </address>
    </author>
    <area>Internet</area>
    <abstract anchor="_abstract"><t anchor="_3eae2d79-b07e-4f6f-a8cb-34f907d49cb2">This document defines extensions to the
Internet Calendaring and Scheduling Core Object Specification (iCalendar) (RFC5545)
to provide improved status tracking, scheduling and specification of tasks.</t>
<t anchor="_1c2e1400-b623-480e-ac0e-70a30b145892">It also defines how Calendaring Extensions to
WebDAV (CalDAV) (RFC 4791) servers can be extended to
support certain automated task management behaviours.</t></abstract>
  </front>
  <middle>
    <section anchor="acknowledgements"><name>Acknowledgements</name><t anchor="_1f01f22f-9dc1-44fa-bc48-6ac4207853af">The authors would like to thank the members of the Calendaring and Scheduling Consortium technical committees and the following individuals for contributing their ideas, support and comments:</t>
<t anchor="_d3497d0e-addf-4b46-a5bf-a1c99ef19fa3">John Chaffee, Marten Gajda, Ken Murchison</t>
<t anchor="_e518ad3e-f209-4e80-896f-1fe9c63c1597">The authors would also like to thank CalConnect, the Calendaring and
Scheduling Consortium, for advice with this specification.</t></section>
    <section anchor="_introduction"><name>Introduction</name><t anchor="_58dc8f80-25c3-4b7a-a14e-ae2a996da0c6">This document specifies extensions to the existing Internet Calendaring and Scheduling Core Object Specification (iCalendar) <relref target="RFC5545" section="" relative=""></relref>, and associated protocols, in order to enhance the structured communication and execution of tasks. The enhancements allow for the communication, time planning and scheduling of tasks by and between automated systems (e.g. in smart power grids, business process management systems) as well as for human centered tasks.</t>
<t anchor="_0c73588d-4641-4a8f-8629-b706ec717b1f">A "task" is a representation of an item of work assigned to an individual or organization. In the iCalendar Object Model <relref target="RFC5545" section="" relative=""></relref> the representation of tasks is by "VTODO" calendar components. Tasks can be identified in a number of situations, either informally as ad-hoc tasks in personal "to-do" lists or more formally in:</t>
<ul anchor="_f456dc75-7407-4ee1-89b0-91de24c768f2">
<li>Business processes - ranging from repetitive workflows to adaptive cases and trouble ticketing</li>
<li>Project Management - whether for large scale construction projects or collaborative software development</li>
</ul>
<t anchor="_07c20fbe-dc05-4bc8-bb98-4ac8f836bfb6">The extensions specified here are defined in the context of an overall architecture for task calendaring and scheduling.</t>
<section anchor="conventions"><name>Terms and Definitions</name><t anchor="_43a2782b-fe12-4548-b6ca-c0af5bbeecdc">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",
"NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in BCP 14 <relref target="RFC2119" section="" relative=""></relref> <relref target="RFC8174" section="" relative=""></relref> when, and
only when, they appear in all capitals, as shown here.</t>
<t anchor="_27a2519d-c688-41db-9c84-0cd1a0353a7b">Calendaring and scheduling roles are referred to in quoted-strings of
text with the first character of each word in upper case.  For
example, "Organizer" refers to a role of a "Calendar User" (CU)
within the scheduling protocol.</t>
<t anchor="_315e658d-4cac-41a7-ab88-eb34b1ebe048">Calendar components defined by <relref target="RFC5545" section="" relative=""></relref> are referred to with
capitalized, quoted-strings of text.  All calendar components start
with the letter "V".  For example, "VEVENT" refers to the event
calendar component, "VTODO" refers to the to-do calendar component,
and "VJOURNAL" refers to the daily journal calendar component.</t>
<t anchor="_ddd22577-644d-4fe6-a22a-55f9bfab00b5">Scheduling methods are referred to with capitalized, quoted-strings
of text.  For example, "REQUEST" refers to the method for requesting
a scheduling calendar component be created or modified; "REPLY"
refers to the method a recipient of a request uses to update their
status with the "Organizer" of the calendar component.</t>
<t anchor="_8d13b328-cbf6-4550-aea7-8f5c8a7a49f7">Properties defined by [RFC5545] are referred to with capitalized,
quoted-strings of text, followed by the word "property".  For
example, "ATTENDEE" property refers to the iCalendar property used to
convey the calendar address of a "Calendar User".</t>
<t anchor="_ecc4ee6b-c3c2-4173-8139-c6c1ae15ea44">Property parameters defined by this specification are referred to
with capitalized, quoted-strings of text, followed by the word
"parameter".  For example, "VALUE" parameter refers to the iCalendar
property parameter used to override the default data type for a
property value.</t>
<t anchor="_7a3082cb-3f62-4b51-aab1-3f275155c7a7">Enumerated values defined by this specification are referred to with
capitalized text, either alone or followed by the word "value".</t>
<t anchor="_4aadf1a2-6a8c-4d80-9f54-d840b2260e14">In tables, the quoted-string text is specified without quotes in
order to minimize the table length.</t>
<t anchor="terms">Terms defined in this specification include:</t>
<dl anchor="_10cc94da-26a3-48ec-b7d0-2d6dc6d508d1"><dt>Assignee</dt><dd>
<t anchor="_0d747a04-c64e-46d1-a279-fb93ad9fe4ca">A calendar user assigned to perform a given task. An assignee is equivalent to an attendee of an event.</t>
</dd><dt>Calendar User (CU)</dt><dd>
<t anchor="_e82a1293-4126-4076-92e1-9041982d880e">A person or software system that accesses or modifies calendar information.</t>
</dd><dt>Calendar User Agent (CUA)</dt><dd>
<t anchor="_4e41e866-0b06-4599-a518-5b8608d90dc2">This may be</t>
<ol anchor="_fffc4789-41a0-4633-a016-ba89c51e0c46" type="1">
<li>Software with which the calendar user communicates with a calendar service or local calendar store to access calendar information.</li>
<li>Software that gathers calendar data on the Calendar User's behalf.</li>
</ol>
</dd><dt>Candidate</dt><dd>
<t anchor="_0f172f4e-08b8-4b0c-b90e-828569f26d01">A calendar user who might be able to perform a given task, prior to actually being assigned the task, e.g., a dispatcher has a list of taxi drivers (candidates) from which one will be selected to pick-up a passenger.</t>
</dd><dt>Organizer</dt><dd>
<t anchor="_b4b93e24-770d-49ab-90a9-497fe2b7c697">A calendar user who creates a calendar item, requests free/busy information, or published free/busy information. It is an Organizer who invites Attendees <relref target="RFC5545" section="" relative=""></relref>.</t>
</dd><dt>Observer</dt><dd>
<t anchor="_ec3852f2-61fa-45e2-bc51-2486733e9f1f">A calendar user interested in a calendar component, e.g., a manager may have interest in all tasks that have not been completed.</t>
</dd><dt>Resource</dt><dd>
<t anchor="_a1b854f8-030a-400e-9eb1-dec5a194825a">A resource in the scheduling context is any shared entity that can be scheduled by a calendar user, but does not control its own attendance status. Resources can be of "Location", "Equipment", or "Role" type.</t>
</dd><dt>Task</dt><dd>
<t anchor="_226eb6f1-0893-4afd-b95b-f7b32859f133">A representation of an item of work that can be assigned to one or more task actor assignees. In <relref target="RFC5545" section="" relative=""></relref>, these are "VTODO" calendar components, which are groupings of component properties and possibly "VALARM" calendar components that represent an action-item or assignment.</t>
</dd></dl></section></section>
    <section anchor="architecture"><name>Task Architecture</name><t anchor="_6f1f3b9c-3552-4093-a55b-9ef82644de0a">A reference architecture for task calendaring and
scheduling is defined in order to identify the key
logical elements involved in task management and the
interfaces between them to enable interoperability.
The logical elements identified here establish an
appropriate separation of concerns and clarify the
responsibilities of different elements. However, the
architecture does not prescribe a binding or packaging
of elements, i.e., software systems may be developed
where some elements are tightly bound and the interfaces
between bound elements are not exposed. The task
architecture is also described in <relref target="TARCH" section="" relative=""></relref>.</t>
<sourcecode anchor="_df9ed87d-dcd6-467b-8e85-e34d541acdc9"><![CDATA[  Task        +-------+
  Trigger             |
+---------------------V---------------------+    +-----------+
|           Task Generating System          |    |           |
|        +-------------------------+        |    |           |
|        |            O            |        |    |           |
|        |           /|\           |        |    |           |
|        |           / \           |        |    |           |
|        |      Task Organizer     |        <---->           |
|        +-^--------^--------------+        |    |           |
|          |        |                       |    |           |
| +--------V-+ +----V-----+    +----------+ |    |           |
| |   Task   | | Process  |    |   Task   | |    |           |
| |Assignment| |  Logic   <---->  Domain  | |    |           |
| |  Rules   | |          |    |   Data   | |    |           |
| +----------+ +----------+    +----------+ |    |           |
|                                           |    |           |
+------^----------+-----^-------------------+    |           |
       |          |     |                        |           |
  Availability  Task   Task                      |           |
       |          |   Status                     |           |
       |          |     |                        |           |
+------v----------v-----+-------------------+    |           |
|      Calendar and Scheduling System       |    | Directory |
| +---------+  +---------+                  |    |  Service  |
| |         |  |  Task   |                  <---->           |
| |Schedule |  |  Lists  |                  |    |           |
| |         |  |         |                  |    |           |
| +---------+  +---------+      Server      |    |           |
+-------------------------------------------+    |           |
|                               Client      |    |           |
| +----------------------+    +-----------+ |    |           |
| |       Calendar       |    |   Task    | |    |           |
| |      User Agent      +----> Specific  | <---->           |
| |                      |    |Application| |    |           |
| +----------------------+    +-----------+ |    |           |
|                                           |    |           |
+-----^---------^--------+---------+--------+    |           |
      |         |        |         |             |           |
+-----V---------V--------V---------V--------+    |           |
|                Task Actors                |    |           |
|     O         O        O         O        |    |           |
|    /|\       /|\      /|\       /|\       +---->           |
|    / \       / \      / \       / \       |    |           |
|          Candidate(s)        Observer(s)  |    |           |
| Assignee(s)       Resource(s)             |    |           |
+-------------------------------------------+    +-----------+]]></sourcecode>
</section>
    <section anchor="architecture-elements"><name>Task Architecture Elements</name><t anchor="_ab197b08-1624-4dfc-b862-402903ba31f8">The following logical elements form the task architecture that this specification is based on:</t>
<dl anchor="_50c8d3bb-0866-44af-8b6f-936b3c2c9490"><dt>Task Actors</dt><dd>
<t anchor="_246e0bb2-c423-46f9-b90a-c1d2df047988">Various calendar users that may be involved in the monitoring or performing of a task. The set of actors includes: Organizers, Observers, Resources, Assignees, and Candidates.</t>
</dd><dt>Task Organizer</dt><dd>
<t anchor="_d5772b8b-3aea-417c-8164-75ee9af20648">The Organizer of a task.</t>
</dd><dt>Task Domain Data</dt><dd>
<t anchor="_a9f9b23d-5347-44f9-9b06-6701ae4e4bc0">This is any domain specific data that may be acted on or provides context to it in performing a task.</t>
</dd><dt>Task Specific Application</dt><dd>
<t anchor="_12c8d3c9-7b68-4c90-ad6a-a909ba0a86b1">A task specific application renders the data concerning the task (including task domain data) for presentation and manipulation by a task actor.</t>
</dd><dt>Process Logic</dt><dd>
<t anchor="_121b4eeb-0583-42cb-8df7-0913bc55944a">Determines under what conditions a task (or tasks) is generated and the actions to take on completion, or some other status event occurring (or not) on the task.</t>
</dd><dt>Task Trigger</dt><dd>
<t anchor="_d841372f-786d-4e93-90c5-8c5a45433a5e">This is some event that gives rise to the generation of a task according to Process Logic. Task triggers can come from many different sources including, for example; a task being requested through the calendaring system, a status change in the progression of a business process being managed by a business process management or ERP system.</t>
</dd><dt>Task Assignment Rules</dt><dd><t anchor="_010d354b-8ff2-47fc-a524-279d1f0b83f8">Govern how actors are assigned to a task. A range of different assignment patterns [WfRP] may be considered, including the two general cases:</t><ol anchor="_9070e004-d9b7-4494-9607-e8323a650f93" type="1">
<li>Delegation to a named actor or group of actors</li>
<li>Advertising to a pool of actors for self-selection</li>
</ol>
<t anchor="_7e3d705b-f4c8-4d9a-aa60-9c8922287161">In either case the assignment may be made based on a variety of criteria including, name, availability, skills, capacity, etc.</t></dd><dt>Task Generating System</dt><dd>
<t anchor="_0936eb69-2e14-44fc-8506-2c4cb60dcece">A system that creates and assigns tasks in response to some initiating event (task trigger). Task creation is according to Process Logic with task assignment determined by Task Assignment Rules. This system also tracks the status of tasks and will initiate further actions based upon the status. A task generating system can take many forms, for example; Business Process Management System, Project Management System, Bug Tracking System, Building Control System. A Task Generating System may also be a human. In iCalendar terms the Task Generating System is the organizer.</t>
</dd><dt>Human Task Generation</dt><dd>
<t anchor="_9172f050-c348-4c6a-a634-a19d789e9c24">Task creation, assignment and tracking coordinated by a human organizer is a special case of a task generating system. In this case Task Assignment Rules and Process Logic may be either explicit or tacit.</t>
</dd><dt>Directory Service</dt><dd>
<t anchor="_7f0c58b1-e37a-4955-9503-ce3fdbbbda05">A software system that stores and provides access to information providing details of task actors that may participate or be interested in a task.</t>
</dd><dt>Calendar and Scheduling System</dt><dd>
<t anchor="_736d4e69-cefb-4fb3-a395-35fb28bc8387">A software system that stores, publishes and synchronizes calendar data such as events, tasks and journal entries for actors. In the context of tasks this includes schedules (i.e. allocated time and availability to perform tasks) and task lists. A calendar and scheduling system typically consists of server and client software components.</t>
</dd></dl>
<t anchor="_ee19608f-b2f0-404c-bd5a-e36a3cde39e1">It is not within the scope of this document to specify how Process Logic or Task Assignment Rules are codified. Such logic and rules may be codified in a variety of ways, including traditional programming languages (e.g. C++, Java) or process modelling languages (e.g. BPMN <relref target="BPMN" section="" relative=""></relref>).</t></section>
    <section anchor="architecture-foundations"><name>Architecture Foundations</name><t anchor="_114efea3-2098-4951-8832-0a4e91daa919">The key standards that enable interoperability between the logical elements of the architecture are the Internet Calendaring and Scheduling Core Object Specification (iCalendar) <relref target="RFC5545" section="" relative=""></relref> and associated protocols. Task and task status are represented by the iCalendar "VTODO" component. Protocols include, in particular, the iCalendar Transport-Independent Interoperability Protocol (iTIP) <relref target="RFC5546" section="" relative=""></relref> for task assignment and scheduling, and Calendaring Extensions to WebDAV (CalDAV) <relref target="RFC4791" section="" relative=""></relref> for client server communication.</t>
<t anchor="_ef12b323-505d-4237-bb58-b5eff321f1cd">Additionally, this specification uses definitions from
Support for iCalendar Relationships <relref target="I-D.ietf-calext-ical-relations" section="" relative=""></relref>. The LINK, REFID, RELATED-TO and CONCEPT properties enable context and a rich set of relationships between tasks and other iCalendar components to be specified.</t></section>
    <section anchor="task-extensions"><name>Task Extensions</name><t anchor="_dc33057a-3190-4589-b404-89d2e5ed7443">In order to support the task architecture described in <xref target="architecture"></xref>, this document defines a number of extensions to the current iCalendar standards in the areas of:</t>
<dl anchor="_8c0a3c6d-3a43-4d07-b501-06369191db67"><dt>Task Specification</dt><dd>
<t anchor="_6fda7f9f-9102-4d03-a769-fcab3b096fb7">improved ability to specify domain specific tasks</t>
</dd><dt>Task Deadlines, Milestones and Time Planning</dt><dd>
<t anchor="_21784f7c-3ff2-4bc7-96f0-18b9bb476cd7">clarification of deadlines and extension for task duration to support task time planning</t>
</dd><dt>Task Scheduling and Assignment</dt><dd>
<t anchor="_3d7be8f3-f99f-4102-b127-e4287c1a66c5">ensure support for common pattens of scheduling and assigning tasks</t>
</dd><dt>Task Status Tracking</dt><dd>
<t anchor="_8169d292-4b87-43f9-a892-e74fd23cb8d5">improved granularity in status tracking information and alerting task actors to pending or actual task status changes</t>
</dd></dl>
<t anchor="_744e9718-fcb9-45ba-bbbb-c88e8e65bb12">These extensions are supported mainly by additions to the properties and parameters used within the "VTODO" component.</t></section>
    <section anchor="task-specification"><name>Task Specification</name><t anchor="_1415c196-68b2-49ab-ae1d-4f9c58d3b109">The specification of tasks must be semantically explicit in order for them to be managed within the context of a business process or project, and be understood by both humans and IT systems. The current VTODO component only provides for simple ad-hoc tasks or 'to do' lists, and is therefore extended by this specification as follows:</t>
<dl anchor="_d5662fe7-a9aa-40de-a45d-e26058807b5b"><dt>Task type</dt><dd>
<t anchor="_d92d0792-55df-45ea-ba64-a89f35e7c917">explicitly what type of task is to be performed is identified.</t>
</dd><dt>Task context and relationships</dt><dd>
<t anchor="_1ea8f25a-ab36-47ae-9ca0-3a6915425a95">how a specific task relates to other tasks and other objects that need to be understood for the effective execution of a task.</t>
</dd><dt>Task specific data</dt><dd>
<t anchor="_7fa69ec4-e884-45d8-bfc5-b828befb7078">the form and content of domain data provided as input to a task and/or that may be output from a task.</t>
</dd><dt>Organizer and attendee</dt><dd>
<t anchor="_1d6b7bdc-40fa-4c24-82cc-3e0a2a68a3c4">recognizes that a task organizer or attendee can be an automated system.</t>
</dd></dl>
<section anchor="_concept_for_task_type_identification"><name>CONCEPT for task type identification</name><t anchor="_11fc0f14-da58-4d4f-a933-a2612dc5992f">The CONCEPT property is used to identify the type of task, for example;</t>
<sourcecode anchor="_5b058cf6-6569-400d-afce-ed29da404467"><![CDATA[CONCEPT:http://example.com/task/delivery]]></sourcecode>
</section>
<section anchor="_task_context_and_relationships"><name>Task Context and Relationships</name><t anchor="_e25159f5-dd3d-45d9-91de-e383a57686fd">The LINK property specifies a link to external information, which may be context to the task. For example:</t>
<sourcecode anchor="_de0e7aad-3a2b-4f3d-a9d3-4420984a4c50"><![CDATA[LINK;REL=SOURCE:http://example.com/package/1234567890

LINK;REL=describedby:mid:752142.1414823874.307E5@mx123.example.com]]></sourcecode>

<t anchor="_6ecd47d2-05b7-43db-a487-e2a471c2cd07">The external information may be data to be manipulated in performing the task. See section 3.1.3 Task Domain Data Handling.</t>
<t anchor="_23675c6b-4f8b-41c3-8de3-85ddebf0db29">REFID is used to identify a key allowing the association of tasks that are related to the same object and retrieval of a task based on this key. This may be, for example, to identify the tasks associated with a given project without having to communicate the task structure of the project, or all tasks associated to a specific package.</t>
<sourcecode anchor="_72fe3b01-efbb-435f-b900-df9db13fbe2f"><![CDATA[REFID:Manhattan

REFID:1234567890]]></sourcecode>

<t anchor="_cc0c0ff3-a98d-4990-8347-e26dc0da1e26">Extensions [Doug114] to the RELATED-TO property allow temporal relationships between tasks as found in project management to be specified as well as parent/child relationships and dependencies (DEPENDS-ON). Tasks (VTODOs) may also be related to other calendar components; for example to a VEVENT to block time to perform a task.</t></section>
<section anchor="_task_domain_data_handling"><name>Task Domain Data Handling</name><t anchor="_3c0e9fc7-4d70-4756-aea0-e779a2891abc">Provide support for task specific input and output data (including updates) beyond the standard iCalendar properties. It is envisaged that standard calendar user agents will be able to launch task specific applications by passing task specific data.</t>
<t anchor="_81646802-89b0-4417-bbc6-6ef741b78cf5">The LINK property can be used to 'attach' the domain specific data to the task. For example, it might be a URI pointing to a web page where the status of the task can be directly manipulated.</t>
<sourcecode anchor="_02e915e5-5f7f-4ece-a5a7-cd3cd3b8be3c"><![CDATA[LINK;REL="vacation-system";VALUE=URI:http://example.com/
vacation-approval?id=1234]]></sourcecode>

<t anchor="_ce4b9fff-8bc8-4977-a76b-4dd95599d35f">Or it might be used for attachments specific to the task, for example an electronic copy of a signature taken to confirm delivery of a package.</t>
<sourcecode anchor="_be6b3785-7306-4310-9730-866460a9071c"><![CDATA[LINK;REL="electronic-signature";VALUE=URI:http://example.com/
delivery/sig1234.jpg]]></sourcecode>
</section></section>
    <section anchor="deadlines"><name>Task Deadlines, Milestones and Time Planning</name><t anchor="_06e8d726-d146-44d5-9ab3-26543cacfab9">Deadlines for starting and finishing a task are defined
by the DTSTART, DUE and DURATION properties. DTSTART
represents the earliest start time for beginning work
on a task. DUE, or DTSTART + DURATION represent the
latest finish time for a task. Thus these properties
define a "window" within which a task has to be
performed. However, there is currently no way to
indicate how long the task is expected to take. This
document defines a new property, ESTIMATED-DURATION, to
allow the estimated time that a task should take to be
specified separately from the deadlines for starting
and finishing a task. This supports time planning by
enabling calendar user agents to display when tasks
should occur and therefore allow calendar users to
visualize when tasks should be performed and allocate
time to them.</t>
<t anchor="_8618fe73-fa55-4332-a397-0257186cbcb0">A task that has intermediary deadlines (i.e., milestones) SHOULD be expressed by child VTODO components (i.e., sub-tasks associated with each of the milestones) in conjunction with the RELATED-TO property to relate the parent and child tasks.</t></section>
    <section anchor="scheduling-assignment"><name>Task Scheduling and Assignment</name><t anchor="_6cfa75b2-de64-490a-98a1-12d857b8ba6c">This specification supports the two distinct models of assigning actors to tasks, i.e., 1) strictly one assignee per task or 2) task assignment to multiple assignees. In this regard one or many ATTENDEES may be specified against a task depending upon the model applied by the task organizer.</t>
<t anchor="_ba051ef3-ced0-4cdc-a918-167ba91a5d3f">In addition a number of different patterns of resource or assignee identification are anticipated. The specific Task Assignment Rules are the responsibility of the Task Organizer.</t>
<t anchor="_41090b3d-4b41-42a7-8c6f-5bf34a390802">Communication of task assignment or delegation to one or more actors who are allocated to a task by the organizer is directly supported by iTIP, i.e., all included ATTENDEES in an iTIP REQUEST are expected to perform the task.</t>
<t anchor="_19226743-f233-4479-b417-8eb6cfbf4d95">The offering or advertising of a task to one or more (potential) actors where only one or a subset of the candidates may accept the task will be addressed by a new VPOLL mode (See Appendix B) [VPOLL].</t></section>
    <section anchor="status-reporting"><name>Status Reporting</name><section anchor="_improved_granularity_in_status_reporting_information"><name>Improved granularity in status reporting information</name>

<t anchor="_69d251f3-9de4-4bac-a4c7-e0e9bcaf9546">This document defines a new status component that can be used to
group related information about the status. This might include
information on why (REASON) and when (DTSTAMP) a status has changed.
In addition new status values are specified to
provide for task suspension, failure and preparation.</t>
</section>
<section anchor="_relating_reason_and_comments_to_attendee_status_changes"><name>Relating reason and comments to ATTENDEE status changes.</name><t anchor="_0b44ca96-e43f-4e91-8552-09cfe5c8dbbc">The <relref target="RFC9073" section="" relative=""></relref> PARTICIPANT component can be used to provide additional
information about why an ATTENDEE participation status has changed.
The COMMENT property can also
be used to include additional human readable information about why the
associated STATUS or ATTENDEE property changed.</t>
<sourcecode anchor="_3daf1b1b-1909-4b23-b696-6faf3882561f"><![CDATA[BEGIN:VSTATUS
STATUS:FAILED
REASON:http://example.com/reason/delivery-failed
SUBSTATE:ERROR
DTSTAMP:20130212T120000Z
COMMENT:Breakdown
END:VSTATUS

ATTENDEE;PARTSTAT=FAILED:mailto:xxx@example.com
...
BEGIN:PARTICIPANT
CALENDAR-ADDRESS:mailto:xxx@example.com
DTSTAMP:20130226T1104510Z
REASON:http://example.com/reason/van-break-down
COMMENT:Puncture
END:PARTICIPANT]]></sourcecode>
</section>
<section anchor="_comments_associated_to_reasons_and_status_changes"><name>Comments associated to reasons and status changes</name><t anchor="_3e876f0d-9398-405b-aa6d-529ef09fb915">Multiple comments and reasons may have the same status. As situations
chnage further VSTATUS components can be added to provide additional
information..</t>
<sourcecode anchor="_0515de0f-7f53-47df-902f-874cecd7027c"><![CDATA[CONCEPT:http://example.com/task/delivery
BEGIN:VSTATUS
STATUS:FAILED
SUBSTATE:ERROR
DTSTAMP:20220212T104900Z
COMMENT:Out of time
END:VSTATUS
BEGIN:VSTATUS
STATUS:FAILED
COMMENT:Traffic Accident on E44
REASON:http://example.com/reason/traffic
DTSTAMP:20220212T110451Z
END:VSTATUS
BEGIN:VSTATUS
STATUS:FAILED
COMMENT:Arrived after office hours
REASON:http://example.com/reason/closed
DTSTAMP:20220212T180451Z
END:VSTATUS]]></sourcecode>
</section>
<section anchor="_task_alerts_and_notifications"><name>Task Alerts and Notifications</name><t anchor="_4b9f1245-d50f-4f19-844b-a7be83b793c0">Different needs to alert or notify task actors of pending or actual
task status changes are recognized:</t>
<dl anchor="_10e73e60-d67f-4217-b0c6-28680c3ab65c"><dt>Alarms</dt><dd>
<t anchor="_24558d59-1e44-470e-9ba3-6f3653847cf7">Alarms (VLARM components) operate in the calendar user agent
space to notify the task actor of a pending task state for a task they
are assigned to or are interested in. Note: there is no constraint in
the current standards on the propagation of alarms specified on
calendar objects by organizers to individual attendees.</t>
</dd><dt>Escalations</dt><dd>
<t anchor="_b9ba891a-324b-4259-a0ca-dc930915b835">An escalation or notification to the ATTENDEE, ORGANIZER,
or other task actor may be required if a deadline associated with a
task is exceeded or for some other reason. Process Logic identifying
when and who to propagate escalations to is the responsibility of the
Task Generating System, e.g., a BPMS.</t>
</dd><dt>Notifications</dt><dd>
<t anchor="_8d2d64d1-fbf2-4378-bfb8-6c992d98f903">Task actors (observers) not directly involved in
performing a task but with a known interest in a given task's status
can be identified by the ASSOCIATE property [Doug214] against certain
components e.g. ALARM, to identify which task events the
stakeholder/party is interested in. Notifications on shared calendars
will allow task actors to register an interest in changes to tasks
within a calendar (see <xref target="appendix-a"></xref>).</t>
</dd></dl></section>
<section anchor="_automated_status_changes"><name>Automated Status Changes</name>

<t anchor="_758792d6-492b-422f-b796-54fcebbe837b">A new property, TASK-MODE, is introduced to instruct servers to apply
automated operations for changing the status of a task.</t>
</section></section>
    <section anchor="new-parameter-values"><name>New Parameter Values</name>

<section anchor="param-val-partstat"><name>Redefined VTODO Participant Status</name><t anchor="_3c28b2a2-c129-4501-81bc-2d0305df9872">Participant status parameter type values are defined in
<relref target="RFC5545" section="3.2.12" relative=""></relref>.  This specification redefines that type
to include the new value FAILED for VTODO iCalendar components.</t>
<dl anchor="_93525624-37f6-44af-80cc-22df54aff6f4"><dt>Format Definition</dt><dd>
<t anchor="_3d7f17f3-2783-4173-b994-a518f69e2fe8">This property parameter is extended by the following notation:</t>
</dd></dl>
<sourcecode anchor="_93651cd6-95d2-4b90-99d6-97cae9603838"><![CDATA[partstat-todo    /= *("FAILED")  ; To-do cannot be completed]]></sourcecode>

<dl anchor="_2a4c7ef2-8047-4226-8e5c-31a8f4b84d26"><dt>Example</dt><dd></dd></dl>
<sourcecode anchor="_17510047-b14f-4175-a871-da4dd5ecf768"><![CDATA[ATTENDEE;REASON="http://example.com/reason/not-enough-time";
 PARTSTAT=FAILED:mailto:jsmith@example.com]]></sourcecode>
</section>
</section>
    <section anchor="new-properties"><name>New Properties</name><section anchor="prop-estimated-duration"><name>Estimated Duration</name><dl anchor="_cc5a00b5-d26f-401a-9c1c-10100e260fe0"><dt>Property Name</dt><dd>
<t anchor="_3ca1c688-6eea-4bbc-a908-e89003d87b94">ESTIMATED-DURATION</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_53777d7d-51ce-4d9f-89b6-f45c155057ef">This property specifies the estimated positive duration of time the corresponding task will take to complete.</t>
</dd><dt>Value Type</dt><dd>
<t anchor="_12036e3c-ce1b-407c-aec8-b5e0bfe38248">DURATION</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_ec6ee956-59f1-4e1f-b49b-7bf126fd2124">IANA and non-standard property parameters can be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_fcdcd19f-1f93-4213-8e6a-ab9356098f8c">This property can be specified in "VTODO" calendar components.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_a2e52125-9b0c-4fd3-9739-31a621ad51cb">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_0612d7fd-94c2-485b-9dcb-9d62d599d0ca" type="bnf"><![CDATA[est-duration  = "ESTIMATED-DURATION" durparam ":" dur-value CRLF
                ;consisting of a positive duration of time.

durparam      = *(";" other-param)]]></sourcecode>

<dl anchor="_d16fb29a-bdd3-4d91-bb40-62cd861a8189"><dt>Description</dt><dd>
<t anchor="_c3982733-6d6d-49a5-ab44-5fd453fc076c">In a "VTODO" calendar component the property MAY be used to specify the estimated duration for the to-do, with or without an explicit time window in which the event should be started and completed.  When present, DTSTART and DUE/DURATION represent the window in which the task can be performed. ESTIMATED-DURATION SHOULD be passed from ORGANIZER to ATTENDEE in iTIP <relref target="RFC5546" section="" relative=""></relref> messages.</t>
</dd><dt>Example</dt><dd>
<t anchor="_4ce96ca1-8bde-4721-9ce8-317dc56abece">The following is an example of this property that specifies an interval of time of exactly one hour:</t>
</dd></dl>
<sourcecode anchor="_b53f95ea-4c58-4446-ad9e-5948785e0f0f"><![CDATA[ESTIMATED-DURATION:PT1H]]></sourcecode>
</section>
<section anchor="prop-reason"><name>Reason</name><dl anchor="_ca5b88f5-6bfb-4fe2-87d8-f9fd1ea64428"><dt>Property name</dt><dd>
<t anchor="_a45108ac-b1d9-4285-97c2-0eb2a893f42f">REASON</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_64070da2-b9e2-4b43-8961-e4047be525dc">To indicate the reason for a change in status of a task or
attendee participation status.</t>
</dd><dt>Value Type</dt><dd>
<t anchor="_c803f81c-3261-49af-a287-3a4fe85afa5a">URI</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_d0a7737e-0c14-4a90-a5a5-c8b51233c7fd">IANA and non-standard property parameters can be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_7f6cfa54-314e-4c38-a9db-3e035d363f3a">This property can be specified in "VSTATUS" and PARTICIPANT calendar components.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_a37872ed-3aaa-465c-b914-f16e39019b3f">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_8c219aee-1642-47fe-9f10-41bb8611ef9c"><![CDATA[reason      = "REASON" reasonparam ":" uri CRLF

reasonparam = *(";" other-param)]]></sourcecode>

<dl anchor="_6ca0db90-8a8c-4ffc-8753-750d0dcad659"><dt>Description</dt><dd>
<t anchor="_8dcb93a6-e129-4009-ac0e-c5bcc1cb432e">This property allows the change in status of a
task or participant status to be qualified by the reason for the change
with a codified reason. Typically reasons are defined within the
context of the task type and therefore SHOULD include the name-space
of the authority defining the task. Common reason codes are IANA
registered and do not have a name-space prefix.</t>
</dd><dt>Example</dt><dd></dd></dl>
<sourcecode anchor="_723b3861-037a-4aa1-882a-bb558a246688"><![CDATA[REASON:http://example.com/reason/delivered-on-time

REASON:out-of-office]]></sourcecode>
</section>
<section anchor="prop-sub-state"><name>Sub-State</name><dl anchor="_32931e7f-dbb2-4bff-8e57-d6a6a353ac99"><dt>Property name</dt><dd>
<t anchor="_6ef9e76a-5138-4336-907f-7b779b3f1af3">SUBSTATE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_b00ff74d-3182-4ff6-b851-1d4801568bb2">To provide additional granularity of task status for e.g.
IN-PROCESS.</t>
</dd><dt>Value Type</dt><dd>
<t anchor="_8e6ddaf4-1792-4291-ac7e-0dfdc416a6fc">TEXT</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_4e1d00c2-2c7d-4a3d-8aef-ecc4798a560a">IANA and non-standard property parameters can be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_6e74be5d-3c4e-4b3f-a153-df4bdfb6c4c0">This property can be specified in a "VSTATUS" calendar component.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_3028314a-ec12-447e-85ac-16fa5d49d3bb">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_2bc6bdfe-7006-4ca4-baa0-da4de36cf9e0"><![CDATA[substate          = "SUBSTATE" substateparam ":" substatevalue CRLF

substateparam     = *(";" other-param)

substatevalue       = ("OK"        ; everything is fine(the default)
                     / "ERROR"     ; something is wrong (the REASON
                     ;               code explains why)
                     / "SUSPENDED" ; waiting on some other task to
                     ;               complete or availability of a
                     ;               resource (REASON code explains
                     ;               why)
                     / iana-token) ; Other IANA-registered type]]></sourcecode>

<dl anchor="_a12d5b93-cee2-40e0-aaef-a1862a6936b6"><dt>Description</dt><dd>
<t anchor="_40545251-9405-4bd1-9721-6f57df4c78e8">The sub-state property allows additional qualification
and granularity of states to be recorded, in particular for the
IN-PROCESS state. It allows individual sub-states to be recorded
without the need to define and publish a sub-task associated with a
parent task purely to track that a particular state has been reached.
This property also allows parallel states to be expressed e.g. that a
task has been suspended at whatever state it has reached.</t>
</dd><dt>Example</dt><dd></dd></dl>
<sourcecode anchor="_78691dff-fdcc-4ada-850f-60ac60df2e72"><![CDATA[BEGIN:VSTATUS
STATUS:FAILED
REASON:http://example.com/reason/no-one-home
SUBSTATE:ERROR
END:VSTATUS

BEGIN:VSTATUS
STATUS:IN-PROCESS
REASON:http://example.com/reason/paint-drying
SUBSTATE:SUSPENDED
END:VSTATUS]]></sourcecode>
</section>
<section anchor="prop-task-mode"><name>Task Mode</name><dl anchor="_f6aa3ec8-37aa-491c-98c4-1810f803e8f5"><dt>Property Name</dt><dd>
<t anchor="_9250dcf6-1168-4812-b156-b416d71c2597">TASK-MODE</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_2641f8b5-a836-423c-986f-7c1888bae939">This property specifies automatic operations that servers apply to tasks based on changes in attendee status (PARTSTAT).</t>
</dd><dt>Value Type</dt><dd>
<t anchor="_d2c0268a-5c59-47f3-88eb-78f6a21fbe79">TEXT</t>
</dd><dt>Property Parameters</dt><dd>
<t anchor="_51d31476-6a92-4e71-aa03-5c73f82d9036">IANA and non-standard property parameters can be specified on this property.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_80e7bce8-135f-47c4-93a9-7cabf438df82">This property can be specified zero or more times in a "VTODO" calendar component.</t>
</dd><dt>Format Definition</dt><dd>
<t anchor="_33ed1907-03dd-4f93-a44d-e2f011cab54c">This property is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_f32dc9cd-3470-4b29-ae12-613f53fa4c95" type="bnf"><![CDATA[task-mode   = "TASK-MODE taskmodeparam ":" taskvalue
              *("," taskvalue) CRLF

taskvalue   = "AUTOMATIC-COMPLETION" ; set STATUS completed
                ;if all attendees have completed
                / "AUTOMATIC-FAILURE"
                / "SERVER"
                / "CLIENT"
                / iana-token
                / x-name

taskmodeparam      = *(";" other-param)]]></sourcecode>

<dl anchor="_861dae38-822c-468e-a5fd-f230efb133dc"><dt>Description</dt><dd>
<t anchor="_296384d0-1b49-43a2-a709-0f499042329c">In a "VTODO" calendar component this property MAY be used to indicate to servers how they can automatically change the state of the task based on iTIP replies from Attendees. For example, the server can automatically set the overall task status (STATUS) to COMPLETED when every attendee has marked their own status (PARTSTAT) as COMPLETED, or the server could mark the task as FAILED if its DUE date passes without it being completed. TASK-MODE processing is performed on the organizer's copy of the task.</t>
</dd></dl>
<t anchor="_9e8e79d2-8cdf-4d93-85ce-403125ec9cbc">The property value is a list of one or more IANA registered tokens that defines modes to be used for the task. This specification defines three modes which are described in the following sub-sections.</t>
<dl anchor="_844ed397-2113-4418-9d30-fc80ede83cc6"><dt>Examples</dt><dd></dd></dl>
<sourcecode anchor="_70691fb7-004e-4025-9e66-8d662c448c56"><![CDATA[TASK-MODE:AUTOMATIC-COMPLETION,AUTOMATIC-FAILURE
TASK-MODE:SERVER
TASK-MODE:AUTOMATIC-FAILURE]]></sourcecode>

<dl anchor="task-mode-automatic-completion"><dt>AUTOMATIC-COMPLETION Task Mode</dt><dd>
<t anchor="_a000c6b9-763d-484d-a46b-cb120fb32b0e">The task mode value "AUTOMATIC-COMPLETION" indicates to the server that it can change the "VTODO" component's STATUS property value to "COMPLETED" as soon as all ATTENDEEs in the task have replied with a "PARTSTAT" parameter set to "COMPLETED".</t>
</dd></dl>
<dl anchor="task-mode-automatic-failure"><dt>AUTOMATIC-FAILURE Task Mode</dt><dd>
<t anchor="_2c24ba1a-8cd8-429c-8b9d-bdc5efcc9add">The task mode value "AUTOMATIC-FAILURE" indicates to the server that it SHOULD change the "VTODO" component's STATUS property value to "FAILED" if either:</t>
<ul anchor="_848b2d41-090b-4d32-bd83-3dbd76f8cc0f">
<li>the PARTSTAT of one ATTENDEE is set to FAILED; or</li>
<li>the current time is past the effective due date of the component and the task has not yet been completed.</li>
</ul>
</dd></dl>
<t anchor="_800bd48f-a67a-4f94-a89c-a33f664cfe3d">Note: The effective due date is either the "DUE" property value or the combination of the "DTSTART" and "DURATION" property values.</t>
<dl anchor="task-mode-client"><dt>CLIENT Task Mode</dt><dd>
<t anchor="_aaaa2aba-e037-4ad6-ba54-4b61640c94b9">The task mode value "CLIENT" is an instruction to the server to honour the status set by the client.</t>
</dd></dl>
<dl anchor="task-mode-server"><dt>SERVER Task Mode</dt><dd>
<t anchor="_23553824-13e3-4e12-8f3c-f47b47a28234">The task mode value "SERVER" indicates to the server that it can change the "VTODO" component's STATUS property value to an appropriate value, based on implementation defined "business rules", as ATTENDEE responses are processed or as deadlines related to the task pass.</t>
<t anchor="_4341fc2f-3e33-4546-b08d-b89204cdcb7d">The server can add this property to a "VTODO" component to indicate to the client that it will be managing the status.</t>
</dd></dl></section></section>
    <section anchor="property-extensions"><name>Property Extensions and Clarifications</name>

<section anchor="prop-ext-status"><name>Redefined STATUS Property</name><t anchor="_9ae59522-8e05-44e3-905a-55d39a545963">The Status property is defined in <relref target="RFC5545" section="3.8.1.11" relative=""></relref>. This
specification extends that property to include new values
associated with VTODO iCalendar components (See Appendix A for
examples of the task state lifecycle).</t>
<dl anchor="_b8476da7-b7c7-4ada-ae91-f7675d8d6ff5"><dt>Format Definition</dt><dd>
<t anchor="_ad9e971d-dbd6-48f7-97e6-9e737657b6c3">The "STATUS" property parameter list is augmented
as follows:</t>
</dd></dl>
<sourcecode anchor="_4268cc99-2e84-4115-9dba-ee05c5f9ea8d" type="bnf"><![CDATA[statvalue-todo = / "PENDING"    ;Indicates a to-do has been
                ;created and accepted, but has not
                ;yet started.
                / "FAILED"       ;Indicates to-do has failed.
                ;Extended status values for
                ;"VTODO".]]></sourcecode>

<t anchor="_0bcbd008-5084-43b0-8b58-f320bfda18ec">Description:</t>
<t anchor="_6d995e19-e87a-41ea-97d3-a60b4506dbe8">PENDING - A task has been created but has not yet started and is ready
to start subject to other dependencies (e.g. preceding task or
DTSTART). This is the default state.</t>
<t anchor="_696f8f3b-e4fb-4b81-9458-0fb31cdeb4f8">FAILED - task has failed and may need some follow-up from the
organizer to re-schedule or cancel</t>
<t anchor="_c571c353-1d0f-4c1e-9878-6a4c3660cc87">Example: The following is an example of this property for a "VTODO"
calendar component:</t>
<sourcecode anchor="_305e162b-a5bd-46e0-b95e-148848706bd7"><![CDATA[STATUS:FAILED]]></sourcecode>
</section>
</section>
    <section anchor="new-components"><name>New Components</name>

<section anchor="vstatus"><name>Status Component</name><dl anchor="_504a063a-5ad7-4428-96e6-8cedad95276b"><dt>Component Name</dt><dd>
<t anchor="_30cbc452-b919-4582-9276-d33ea4853d95">VSTATUS</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_c32a031c-aaaf-4a25-9367-90ebd3fc6a20">This component allows information to be
associated with a status, for example comments and date stamps.</t>
</dd><dt>Conformance</dt><dd>
<t anchor="_5a1b0a93-ad85-4053-96ac-908c3857ecc3">This component can be specified multiple times in
any appropriate calendar component.</t>
</dd><dt>Description</dt><dd>
<t anchor="_60dddbd3-54d2-4fcc-ba6b-5b979d55e146">This component provides a way for multiple date-stamped
statuses to be associated with a component such as a task or an event.</t>
</dd></dl>
<t anchor="_b38b14f3-ceb3-4924-b12b-ffa0ad9c2703">This compoment may also be added to the <relref target="RFC9073" section="" relative=""></relref> PARTICIPANT component
to allow participants in a task to specify their own status.</t>
<dl anchor="_29f230f4-eb79-4701-81ed-34bc2710a554"><dt>Format Definition</dt><dd>
<t anchor="_66ca58da-b8b0-4c2a-a253-729fdac171bc">This component is defined by the following notation:</t>
</dd></dl>
<sourcecode anchor="_ac1098fe-cdb7-4b48-b4e7-c2cd71c1da5a" type="bnf"><![CDATA[statusc = "BEGIN" ":" "VSTATUS" CRLF
          statusprop
          "END" ":" "VSTATUS" CRLF

statusprop     = *(
               ;
               ; The following is REQUIRED,
               ; but MUST NOT occur more than once.
               ;
               status /
               ;
               ; The following are OPTIONAL,
               ; but MUST NOT occur more than once.
               ;
               description / dtstamp / reason / substate / summary
               ;
               ; The following are OPTIONAL,
               ; and MAY occur more than once.
               ;
               comment / styleddescription / iana-prop
               ;
               )]]></sourcecode>

<dl anchor="_87722d46-ecee-4a3b-bf8b-fde5a9dd8b91"><dt>Examples</dt><dd></dd></dl>
<sourcecode anchor="_a50af67f-a985-4e1d-a922-e125856b4ca6"><![CDATA[BEGIN:VSTATUS
STATUS:COMPLETED
REASON: http://example.com/reason/delivered-on-time
DTSTAMP:20220212T120000Z
END:VSTATUS]]></sourcecode>
</section>
</section>
    <section anchor="caldav-support"><name>CalDAV Support for Task Mode</name><t anchor="_28c2e105-c082-4b73-be2e-4ad60f38e1fe">The CalDAV <relref target="RFC4791" section="" relative=""></relref> calendar access protocol allows clients and servers to exchange iCalendar data. With the introduction of the "TASK-MODE" property in this specification, different automated task management behaviours may be delegated to the server by the Task Organizer depending upon the value of "TASK-MODE".</t>
<t anchor="_b4fb3480-b638-4d45-96f7-0d3e57465d56">In order for a CalDAV client to know what task modes are available, a CalDAV server advertises a CALDAV:supported-task-mode-set WebDAV property on calendar home or calendar collections if it supports the use of the "TASK-MODE" property as described in this specification.  The server can advertise a specific set of supported task modes by including one or more CALDAV:supported-task-mode XML elements within the CALDAV:supported-task-mode-set XML element. If no CALDAV:supported-task-mode XML elements are included in the WebDAV property, then clients can try any task mode, but need to be prepared for a failure when attempting to store the calendar data.</t>
<t anchor="_56c5b981-787d-42cd-b8a0-d35f3637c76b">Clients MUST NOT attempt to store iCalendar data containing "TASK-MODE" elements if the CALDAV:supported-task-mode-set WebDAV property is not advertised by the server.</t>
<t anchor="_b2274f2c-7eb6-4f79-8f6b-c4321ed7105f">The server SHOULD return an HTTP 403 response with a DAV:error element containing a CALDAV:supported-task-mode XML element, if a client attempts to store iCalendar data with an "TASK-MODE" element value not supported by the server.</t>
<t anchor="_f2cb28bb-5495-4884-b8b6-5766bacbd804">It is possible for a "TASK-MODE" value to be present in calendar data on the server being accessed by a client that does not support the "TASK-MODE" property. It is expected that existing clients, unaware of "TASK-MODE", will fail gracefully by ignoring the calendar property.</t>
<section anchor="_caldavsupported_task_mode_set_property"><name>CALDAV:supported-task-mode-set Property</name><dl anchor="_4f095950-4be2-4cab-bb8a-fcea0b1d0bf8"><dt>Name</dt><dd>
<t anchor="_45efa950-18ec-483f-bbc0-1281d74b8d91">supported-task-mode-set</t>
</dd><dt>Namespace</dt><dd>
<t anchor="_ae1f05d2-c0f5-47b5-b56a-dd065435ac8f">urn:ietf:params:xml:ns:caldav</t>
</dd><dt>Purpose</dt><dd>
<t anchor="_c91cbdcd-19d0-4a3b-96e5-be82c3b037ca">Enumerates the set of supported iCalendar "TASK-MODE" element values supported by the server.</t>
</dd><dt>Protected</dt><dd>
<t anchor="_f49d1130-c647-4898-895a-d3bb5c9c1351">This property MUST be protected and SHOULD NOT be returned by a PROPFIND allprop request (as defined in Section 14.2 of <relref target="RFC4918" section="" relative=""></relref>).</t>
</dd><dt>Description</dt><dd>
<t anchor="_ff6929a2-d581-4d95-a602-1ec94fcd9927">See above.</t>
</dd><dt>Definition</dt><dd></dd></dl>
<sourcecode anchor="_8f33a0b1-8b27-4ffb-bba2-757710ffbe9b"><![CDATA[<!ELEMENT supported-task-mode-set(supported-task-mode*)>
<!ELEMENT supported-task-mode (#PCDATA)>
<!-- PCDATA value: string - case insensitive but
uppercase preferred -->]]></sourcecode>

<dl anchor="_acfde952-fedf-4d7a-be91-f983399fb931"><dt>Example</dt><dd></dd></dl>
<sourcecode anchor="_c946fdb2-ce1b-489f-8f71-1d0db8ad21ca" type="xml"><![CDATA[<C:supported-task-mode-set xmlns:C="urn:ietf:params:xml:ns:caldav">
  <C:supported-task-mode>AUTOMATIC-COMPLETION</C:supported-task-mode>
  <C:supported-task-mode>AUTOMATIC-FAILURE</C:supported-task-mode>
  <C:supported-task-mode>SERVER</C:supported-task-mode>
  <C:supported-task-mode>CLIENT</C:supported-task-mode>
</C:supported-task-mode-set>]]></sourcecode>
</section></section>
    <section anchor="security"><name>Security Considerations</name>

<t anchor="_526eda81-cc96-47eb-8c5f-dfd495f303fa">This specification introduces no new security considerations beyond those identified in <relref target="RFC5545" section="" relative=""></relref>.</t>
</section>
    <section anchor="iana"><name>IANA Considerations</name><section anchor="_initialization_of_the_status_registry"><name>Initialization of the Status registry</name><t anchor="_bd731149-5da5-49ba-bbf5-5713298bf294">This specification updates <relref target="RFC5545" section="" relative=""></relref> by adding a Status value registry to the iCalendar Elements registry and initializing it as per <relref target="RFC5545" section="" relative=""></relref>.</t>
<table anchor="_9862aeba-57c3-4f5e-9dc1-d9f4e2d7bb18"><name>Initial Status Value Registry</name><thead><tr><th align="left">Name</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_aa280d3a-a11b-41ad-b01f-237eda89a415">CANCELLED</t>
</td><td align="left">
<t anchor="_c3e93211-add6-4cfd-bf57-a68978bf65cc">Current</t>
</td><td align="left">
<t anchor="_1aa34bae-dd96-4ddc-8c1d-17cc2935a1a8">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_3a607ebe-5608-4816-bf01-f408a4d97020">COMPLETED</t>
</td><td align="left">
<t anchor="_8092402d-eebc-4077-8ce1-e4272f98c1e5">Current</t>
</td><td align="left">
<t anchor="_82bac48a-5e07-4f0c-bbf2-b48ab52d163e">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_43cec19f-d47a-43eb-9ab7-3ff74193a9d2">CONFIRMED</t>
</td><td align="left">
<t anchor="_1b9fa3b9-0a97-4be6-bfb0-54d17f1fe3d4">Current</t>
</td><td align="left">
<t anchor="_949dd9b1-888f-4727-995a-5525c0dd1da5">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_c76b5b1c-da3e-4e6f-8388-dd5b95b4d15d">DRAFT</t>
</td><td align="left">
<t anchor="_009f3c2f-3e13-42ab-aeea-20b41210aace">Current</t>
</td><td align="left">
<t anchor="_14934740-daac-4e29-bbe6-be6f316d419f">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_8efbb0a7-888c-4db9-b822-d8be8ff66953">FINAL</t>
</td><td align="left">
<t anchor="_936cffa0-cd8c-47ad-a23c-e7f8d5f005ff">Current</t>
</td><td align="left">
<t anchor="_04361f37-89ee-44d9-ada2-e240962b92ea">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_fde546a3-90de-4cc9-ac60-4c4a58df2237">IN-PROCESS</t>
</td><td align="left">
<t anchor="_22400cf6-b630-48e2-a70d-37626b60688d">Current</t>
</td><td align="left">
<t anchor="_e7301038-f97f-43d2-bc2a-2779ca74a147">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_26fecd19-7a1c-4a01-a8d4-70f431577649">NEEDS-ACTION</t>
</td><td align="left">
<t anchor="_dfa95526-77d1-4b21-a04d-acbfe263acb3">Current</t>
</td><td align="left">
<t anchor="_77ea1547-21b1-429d-a6c4-b34fe8d32ff7">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr><tr><td align="left">
<t anchor="_e576974e-4a71-4c98-8aea-d10f781735ac">TENTATIVE</t>
</td><td align="left">
<t anchor="_06542883-cfc4-4985-98e0-7356ce89a184">Current</t>
</td><td align="left">
<t anchor="_45b23273-ee69-4b0c-849f-b931ed41693f">
<relref target="RFC5545" section="3.8.1.11" relative=""></relref>
</t>
</td></tr></tbody></table></section>
<section anchor="_update_of_the_status_registry"><name>Update of the Status registry</name><t anchor="_17c4a35d-a1db-47fb-8cd9-92059c02fc83">This specification further updates the Status registry with additional values defined in this document.</t>
<table anchor="_a909e93f-9bf1-43bf-af0a-727404d9458b"><name>Updated Status Value Registry</name><thead><tr><th align="left">Value</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_1538636b-ba31-4b72-a13d-9c22e11afd59">PENDING</t>
</td><td align="left">
<t anchor="_632f801c-e705-4203-b4ba-b844514b9be0">Current</t>
</td><td align="left">
<t anchor="_6756e63c-7bdc-4635-bd89-b78fdf359eb2">This Spec, <xref target="prop-ext-status"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_5c886566-d7f0-4731-afc7-4be5c42d06bd">FAILED</t>
</td><td align="left">
<t anchor="_ea5842af-9792-4d9b-85c1-938a081ce73e">Current</t>
</td><td align="left">
<t anchor="_97b3b556-6599-4796-9e4f-1cef67b81319">This Spec, <xref target="prop-ext-status"></xref></t>
</td></tr></tbody></table></section>
<section anchor="_sub_state_value_registry"><name>Sub-State value registry</name><t anchor="_ac87740f-3766-45d8-889d-aba834959360">The following table has been used to initialize the Sub-State registry.</t>
<table anchor="_ab4e6bd9-a222-497c-a84c-da75eaad30ab"><name>Sub-State registry</name><thead><tr><th align="left">Substate</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_8001d751-fe46-4023-a477-db4e811fd7e4">OK</t>
</td><td align="left">
<t anchor="_7ed5e60e-60d2-4295-a362-34eca5856e08">Current</t>
</td><td align="left">
<t anchor="_a37a4c89-8512-4a3c-b69e-0a69064f1b98">This Spec, <xref target="prop-sub-state"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_43118176-d9bc-4e4e-8e10-121f9878c991">ERROR</t>
</td><td align="left">
<t anchor="_72fc129d-acaf-4126-9e13-d16fdab3a858">Current</t>
</td><td align="left">
<t anchor="_7ff8e2c5-4daa-4755-b816-2836e1b57746">This Spec, <xref target="prop-sub-state"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_afdf105b-7012-4430-b78c-7fc8c9e144fc">SUSPENDED</t>
</td><td align="left">
<t anchor="_e397263b-5948-448f-818c-0110e6da639c">Current</t>
</td><td align="left">
<t anchor="_097992f7-d8d5-4429-948b-f2be4d236fe7">This Spec, <xref target="prop-sub-state"></xref></t>
</td></tr></tbody></table></section>
<section anchor="_task_mode_value_registry"><name>Task Mode value registry</name><t anchor="_02c1c023-7217-4b67-bfd6-a6aad047387f">The following table has been used to initialize the Task Mode registry.</t>
<table anchor="_1a45b5cc-699e-41a6-828e-3b9db54bdd6c"><name>Task Mode Value Registry</name><thead><tr><th align="left">Task Mode</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_bdbd7725-a942-4d9b-b167-9cc5ca746eae">AUTOMATIC-COMPLETION</t>
</td><td align="left">
<t anchor="_e279b35b-4e4b-4859-9d46-05eb0e31f1b8">Current</t>
</td><td align="left">
<t anchor="_c81cb872-375f-4006-b091-67228a1745f0">This Spec, <xref target="prop-task-mode"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_eab48e2a-3ef7-43ce-9bbc-1ecf9d093ec9">AUTOMATIC-FAILURE</t>
</td><td align="left">
<t anchor="_fcebd0ca-615c-4421-9b2c-4f4d2fcab9f7">Current</t>
</td><td align="left">
<t anchor="_c4b44fc9-f8e4-48d9-a0e2-df258fd094f5">This Spec,  <xref target="prop-task-mode"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_76ddeef4-4159-42bc-b0f5-e2f33d54bce3">CLIENT</t>
</td><td align="left">
<t anchor="_5de9fa0a-6f26-4f88-9a59-2315071b01fa">Current</t>
</td><td align="left">
<t anchor="_cc1f70e7-8bd1-4b68-b2e5-7e346618ffb2">This Spec,  <xref target="prop-task-mode"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_c2b6910b-3bcf-4881-b263-7e50caaec6dd">SERVER</t>
</td><td align="left">
<t anchor="_8e495660-ccd2-4c92-9b77-d97e296cba99">Current</t>
</td><td align="left">
<t anchor="_555c0dd9-bd36-417b-a92a-3854bc8aa30b">This Spec,  <xref target="prop-task-mode"></xref></t>
</td></tr></tbody></table></section>
<section anchor="_participation_statuses_registry"><name>Participation Statuses registry</name><t anchor="_fe038344-fb06-4a34-99e3-aa8516942050">The following table has been used to update the Participation Statuses registry.</t>
<table anchor="_96fbef55-321b-4af6-8105-4fef025c8566"><name>Participation Statuses Registry</name><thead><tr><th align="left">Value</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_adade29f-370c-4f5c-809e-dd8f53519214">FAILED</t>
</td><td align="left">
<t anchor="_f9f63e57-baf0-44e7-8daf-aa985ba47a89">Current</t>
</td><td align="left">
<t anchor="_e4e401b4-4691-4f3a-bd0a-8a5deb732dab">This Spec, <xref target="param-val-partstat"></xref></t>
</td></tr></tbody></table></section>
<section anchor="_properties_registry"><name>Properties registry</name><t anchor="_b47f76d1-7f0a-4c7b-a47d-1c3c29cda7f4">The following table has been used to update the Properties registry.</t>
<table anchor="_41369fcc-f698-4005-bb7d-bb05face28eb"><name>Updated Properties Registry</name><thead><tr><th align="left">Property</th><th align="left">Status</th><th align="left">Reference</th></tr></thead><tbody><tr><td align="left">
<t anchor="_5857ade1-a5ff-4597-a512-51760655e4aa">ESTIMATED_DURATION</t>
</td><td align="left">
<t anchor="_b7b473bd-4166-4cb0-99da-bd409144c0b0">Current</t>
</td><td align="left">
<t anchor="_3ffc9824-78cc-40ec-a160-773106d655b7">This Spec, <xref target="prop-estimated-duration"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_0c694b0d-f7ca-480f-8b86-76291c580f74">REASON</t>
</td><td align="left">
<t anchor="_dd2495b9-c104-4fb6-9984-8f3649a561d7">Current</t>
</td><td align="left">
<t anchor="_afe974b3-5e8d-475d-a063-6e6f7763dda0">This Spec, <xref target="prop-reason"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_66f75a52-1d8a-48ad-9c8d-dac4fef7ea1c">SUBSTATE</t>
</td><td align="left">
<t anchor="_db74eddc-32d3-4b61-9711-47c4ac523814">Current</t>
</td><td align="left">
<t anchor="_f33e6c2c-b143-422c-ad0b-5d7ada6f692b">This Spec, <xref target="prop-sub-state"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_c5f8a5c2-4244-4565-a14c-529ae4443131">STATUS</t>
</td><td align="left">
<t anchor="_c7f27f14-1dbd-467e-bb9a-3017747bb0f3">Current</t>
</td><td align="left">
<t anchor="_743e0de5-3b26-470f-8d9f-8697cf93e834">This Spec, <xref target="prop-ext-status"></xref></t>
</td></tr><tr><td align="left">
<t anchor="_3996020d-d359-4082-89ad-cfc2e2218a35">TASK-MODE</t>
</td><td align="left">
<t anchor="_c15e1e98-f2d4-4246-ba3e-b5a737689e27">Current</t>
</td><td align="left">
<t anchor="_9d9e066d-83c4-4885-9b13-5f1081824e53">This Spec, <xref target="prop-task-mode"></xref></t>
</td></tr></tbody></table></section></section>
  </middle>
  <back>
    <references anchor="_normative_references">
      <name>Normative References</name>
      <reference target="https://www.rfc-editor.org/info/rfc2119" anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" asciiFullname="S. Bradner"></author>
          <date month="March" year="1997"></date>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.2119.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc2119" type="src"></format>
        <refcontent>RFC 2119</refcontent>
        <seriesInfo value="2119" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC2119" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc4791" anchor="RFC4791">
        <front>
          <title>Calendaring Extensions to WebDAV (CalDAV)</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo"></author>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux"></author>
          <author fullname="L. Dusseault" asciiFullname="L. Dusseault"></author>
          <date month="March" year="2007"></date>
          <abstract>
            <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format.  This document defines the "calendar-access" feature of CalDAV.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.4791.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc4791" type="src"></format>
        <refcontent>RFC 4791</refcontent>
        <seriesInfo value="4791" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC4791" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc4918" anchor="RFC4918">
        <front>
          <title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title>
          <author fullname="L. Dusseault" asciiFullname="L. Dusseault" role="editor"></author>
          <date month="June" year="2007"></date>
          <abstract>
            <t>Web Distributed Authoring and Versioning (WebDAV) consists of a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, URL namespace manipulation, and resource locking (collision avoidance).RFC 2518 was published in February 1999, and this specification obsoletes RFC 2518 with minor revisions mostly due to interoperability experience.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.4918.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc4918" type="src"></format>
        <refcontent>RFC 4918</refcontent>
        <seriesInfo value="4918" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC4918" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5545" anchor="RFC5545">
        <front>
          <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
          <author fullname="B. Desruisseaux" asciiFullname="B. Desruisseaux" role="editor"></author>
          <date month="September" year="2009"></date>
          <abstract>
            <t>This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5545.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5545" type="src"></format>
        <refcontent>RFC 5545</refcontent>
        <seriesInfo value="5545" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5545" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc5546" anchor="RFC5546">
        <front>
          <title>iCalendar Transport-Independent Interoperability Protocol (iTIP)</title>
          <author fullname="C. Daboo" asciiFullname="C. Daboo" role="editor"></author>
          <date month="December" year="2009"></date>
          <abstract>
            <t>This document specifies a protocol that uses the iCalendar object specification to provide scheduling interoperability between different calendaring systems.  This is done without reference to a specific transport protocol so as to allow multiple methods of communication between systems.  Subsequent documents will define profiles of this protocol that use specific, interoperable methods of communication between systems.The iCalendar Transport-Independent Interoperability Protocol (iTIP) complements the iCalendar object specification by adding semantics for group scheduling methods commonly available in current calendaring systems.  These scheduling methods permit two or more calendaring systems to perform transactions such as publishing, scheduling, rescheduling, responding to scheduling requests, negotiating changes, or canceling.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.5546.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc5546" type="src"></format>
        <refcontent>RFC 5546</refcontent>
        <seriesInfo value="5546" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC5546" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc8174" anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" asciiFullname="B. Leiba"></author>
          <date month="May" year="2017"></date>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.8174.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc8174" type="src"></format>
        <refcontent>RFC 8174</refcontent>
        <seriesInfo value="8174" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC8174" name="DOI"></seriesInfo>
      </reference>
      <reference target="https://www.rfc-editor.org/info/rfc9073" anchor="RFC9073">
        <front>
          <title>Event Publishing Extensions to iCalendar</title>
          <author fullname="M. Douglass" asciiFullname="M. Douglass"></author>
          <date month="August" year="2021"></date>
          <abstract>
            <t>This specification updates RFC 5545 by introducing a number of new iCalendar properties and components that are of particular use for event publishers and in social networking. This specification also defines a new "STRUCTURED-DATA" property for iCalendar (RFC 5545) to allow for data that is directly pertinent to an event or task to be included with the calendar data.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.9073.xml" type="xml"></format>
        <format target="https://www.rfc-editor.org/info/rfc9073" type="src"></format>
        <refcontent>RFC 9073</refcontent>
        <seriesInfo value="9073" name="RFC"></seriesInfo>
        <seriesInfo value="10.17487/RFC9073" name="DOI"></seriesInfo>
      </reference>
      <reference anchor="I-D.ietf-calext-ical-relations">
        <front>
          <title>Support for iCalendar Relationships</title>
          <author fullname="Michael Douglass" asciiFullname="Michael Douglass"></author>
          <date month="December" year="2020"></date>
          <abstract>
            <t>This specification updates RELATED-TO defined in [RFC5545] and introduces new iCalendar properties LINK, CONCEPT and REFID to allow better linking and grouping of iCalendar components and related data.</t>
          </abstract>
        </front>
        <format target="https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.I-D.ietf-calext-ical-relations.xml" type="xml"></format>
        <format target="https://www.ietf.org/internet-drafts/draft-ietf-calext-ical-relations-06.txt" type="TXT"></format>
        <format target="https://www.ietf.org/internet-drafts/draft-ietf-calext-ical-relations-06.pdf" type="PDF"></format>
        <refcontent>I-D.ietf-calext-ical-relations</refcontent>
        <seriesInfo value="ietf-calext-ical-relations" name="Internet-Draft"></seriesInfo>
      </reference>
    </references>
    <references anchor="_informative_references">
      <name>Informative References</name>
      <reference target="https://www.omg.org/spec/BPMN/2.0.2/About-BPMN/" anchor="BPMN">
        <front>
          <title>Business Process Model and Notation</title><author surname="Unknown"></author>
          <date month="January" year="2014"></date>
          <keyword>Business Modeling</keyword>
          <keyword>Domain</keyword>
          <abstract>
            <t>Business Process Model and Notation has become the de-facto standard for business processes diagrams. It is intended to be used directly by the stakeholders who design, manage and realize business processes, but at the same time be precise enough to allow BPMN diagrams to be translated into software process components. BPMN has an easy-to-use flowchart-like notation that is independent of any particular implementation environment.</t>
          </abstract>
        </front>
        <format target="https://www.omg.org/spec/BPMN/2.0.2/About-BPMN/" type="src"></format>
        <format target="https://www.omg.org/spec/BPMN/2.0.2/PDF" type="pdf"></format>
        <refcontent>OMG BPMN 2.0.2</refcontent>
      </reference>
      <reference anchor="TARCH">
        <front>
          <title>Apthorp, A., Daboo, C., Douglass, M., CalConnect, Task Architecture V1.0, </title><author surname="Unknown"></author>
        </front>
        <refcontent>CalConnect Task Architecture V1.0</refcontent>
      </reference>
      <reference anchor="EDISTS">
        <front>
          <title>UN Economic Commission for Europe, UN/EDIFACT, D14.A, STS STATUS, April 30, 2014,http://www.unece.org/fileadmin/DAM/trade/untdid/d14a/trsd/trsdsts.htm</title><author surname="Unknown"></author>
        </front>
        <refcontent>UN/EDIFACT, D14.A</refcontent>
      </reference>
      <reference anchor="WfRP">
        <front>
          <title>Russell, N., ter Hofstede, A.H.M., Edmond, T., van der Aalst,W.M.P., Workflow Resource Patterns, Eindhoven University of Technology, 2004, </title><author surname="Unknown"></author>
        </front>
        <refcontent>WfRP</refcontent>
      </reference>
      <reference anchor="WSCal">
        <front>
          <title>Considine, T., Douglass, M., WS-Calendar Version 1.0, OASIS, 30 July 2011, </title><author surname="Unknown"></author>
        </front>
        <refcontent>OASIS WS-Calendar V1.0</refcontent>
      </reference>
      <reference anchor="WSHT">
        <front>
          <title>Ings, D., Clement, L., Koenig, D., Mehta, V., Mueller, R., Rangaswamy, R., Rowley, M., Trickovic, I., Web Services - Human Task Version 1.1 (WS-HumanTask), OASIS, 17 August 2010, </title><author surname="Unknown"></author>
        </front>
        <refcontent>OASIS WS-HT V1.1</refcontent>
      </reference>
    </references>
    <section anchor="appendix-a"><name>Examples of Task State Lifecycle</name><section anchor="_simple_case_status_change"><name>Simple Case Status Change</name>

<table anchor="_d4ac31a6-dde3-4910-bdd8-ed27487a7c32"><name>Example of status changes in assigning and performing a task with one attendee.</name><thead><tr><th align="left"></th><th align="left">STATUS</th><th align="left">PARTSTAT</th><th align="left">Action</th></tr></thead><tbody><tr><td align="left">1</td><td align="left">-</td><td align="left">-</td><td align="left">Organizer draft</td></tr><tr><td align="left">2</td><td align="left">NEEDS-ACTION</td><td align="left">NEEDS-ACTION</td><td align="left">Organizer sends iTIP request</td></tr><tr><td align="left">3</td><td align="left">NEEDS-ACTION</td><td align="left">ACCEPTED</td><td align="left">Attendee reply</td></tr><tr><td align="left">4</td><td align="left">PENDING</td><td align="left">ACCEPTED</td><td align="left">Task accepted but waiting on some "trigger" to start (e.g. another task has to finish first)</td></tr><tr><td align="left">5</td><td align="left">IN-PROCESS</td><td align="left">IN-PROCESS</td><td align="left">Attendee reply now working on the task</td></tr><tr><td align="left">6</td><td align="left">IN-PROCESS</td><td align="left">COMPLETED</td><td align="left">Attendee reply completed</td></tr><tr><td align="left">7</td><td align="left">COMPLETED</td><td align="left">COMPLETED</td><td align="left">Organizer changes overall state</td></tr></tbody></table>
</section>
<section anchor="_example_for_multiple_attendees"><name>Example for multiple Attendees</name><t anchor="_6d32d1f0-7a60-4adf-ae9f-f1bad732bc22">Example of status changes in assigning and performing a task with two attendees (A1 and A2).</t>
<table anchor="_29fcd5ab-6d13-4cb7-8a42-72807c11b7ca"><name>Example for multiple Attendees</name><thead><tr><th align="left"></th><th align="left">STATUS</th><th align="left">PARTSTAT (A1)</th><th align="left">PARTSTAT (A2)</th><th align="left">Action</th></tr></thead><tbody><tr><td align="left">1</td><td align="left">-</td><td align="left">-</td><td align="left">-</td><td align="left">Organizer draft.</td></tr><tr><td align="left">2</td><td align="left">NEEDS-ACTION</td><td align="left">NEEDS-ACTION</td><td align="left">NEEDS-ACTION</td><td align="left">Organizer sends iTIP request.</td></tr><tr><td align="left">4</td><td align="left">NEEDS-ACTION</td><td align="left">ACCEPTED</td><td align="left">NEEDS-ACTION</td><td align="left">Attendee 1 reply.</td></tr><tr><td align="left">5</td><td align="left">NEEDS-ACTION</td><td align="left">ACCEPTED</td><td align="left">ACCEPTED</td><td align="left">Attendee 2 reply.</td></tr><tr><td align="left">6</td><td align="left">PENDING</td><td align="left">ACCEPTED</td><td align="left">ACCEPTED</td><td align="left">Task accepted but waiting on some"trigger" to start (e.g. another task has to finish first)</td></tr><tr><td align="left">7</td><td align="left">IN-PROCESS</td><td align="left">ACCEPTED</td><td align="left">IN-PROCESS</td><td align="left">Attendee 2 reply now working on the task.</td></tr><tr><td align="left">8</td><td align="left">IN-PROCESS</td><td align="left">IN-PROCESS</td><td align="left">IN-PROCESS</td><td align="left">Attendee 1 reply now working on the task.</td></tr><tr><td align="left">9</td><td align="left">IN-PROCESS</td><td align="left">COMPLETED</td><td align="left">IN-PROCESS</td><td align="left">Attendee 1 reply Completed (overall status still IN-PROCESS).</td></tr><tr><td align="left">10</td><td align="left">IN-PROCESS</td><td align="left">COMPLETED</td><td align="left">COMPLETED</td><td align="left">Attendee 2 reply Completed</td></tr><tr><td align="left">11</td><td align="left">COMPLETED</td><td align="left">COMPLETED</td><td align="left">COMPLETED</td><td align="left">Organizer changes overall state once both attendees are finished.</td></tr></tbody></table>
<t anchor="_820dc018-2190-473f-a342-8d9705dc7b4d">Note: The logic for determining the status change to the VTODO is determined by the task organizer based on the ATTENDEE status and other business logic.</t></section>
<section anchor="_example_of_failure"><name>Example of Failure</name><t anchor="_6b2d3517-04c0-4448-9650-c4f2ba92e6e5">Example of status changes for a task that fails.</t>
<table anchor="_4c22c0f5-87d4-4ab8-86c9-e3c7711ac065"><name>Example of Failure</name><thead><tr><th align="left"></th><th align="left">STATUS</th><th align="left">PARTSTAT</th><th align="left">Action</th></tr></thead><tbody><tr><td align="left">1</td><td align="left">-</td><td align="left">-</td><td align="left">Organizer draft</td></tr><tr><td align="left">2</td><td align="left">NEEDS-ACTION</td><td align="left">NEEDS-ACTION</td><td align="left">Organizer sends iTIP request</td></tr><tr><td align="left">3</td><td align="left">NEEDS-ACTION</td><td align="left">ACCEPTED</td><td align="left">Attendee reply</td></tr><tr><td align="left">4</td><td align="left">IN-PROCESS</td><td align="left">IN-PROCESS</td><td align="left">Attendee reply now working on the task</td></tr><tr><td align="left">5</td><td align="left">IN-PROCESS</td><td align="left">FAILED</td><td align="left">Attendee reply task failed</td></tr><tr><td align="left">6</td><td align="left">FAILED</td><td align="left">FAILED</td><td align="left">Organizer changes overall state</td></tr></tbody></table></section></section>
    <section anchor="changelog"><name>Change log</name><t anchor="_9755ea0b-ed2d-4499-89fd-44f892712327">V02. 2021-05-05 MD</t>
<ul anchor="_9ab15e51-82d6-46a6-a30d-fa98e4cda43a">
<li>Redo in asciidoc</li>
<li>Change STRUCTURED-CATEGORY to CONCEPT</li>
<li>Add GROUP parameter definition</li>
</ul>
<t anchor="_db10ab16-85af-4900-9efd-2917db3a399c">V01. 2015-08-23 AA</t>
<ul anchor="_7d734d33-e08c-4077-a610-13b73c6326bf">
<li>Highlighted use of ESTIMATED-DURATION for time planning.</li>
<li>Corrected PARTSTAT example section 5.1. Changed DECLINED to FAILED.</li>
<li>Replaced Task Mode AUTOMATIC-STATUS with CLIENT and SERVER modes. Also, clarified that task mode processing is only done on the organizer's copy.</li>
<li>Clarified responsibility for setting MODIFIED.</li>
<li>CalDAV support added.</li>
<li>Updated normative references.</li>
</ul></section>
    <section anchor="working-notes"><name>Working Notes</name><section anchor="_advertising_tasks"><name>Advertising tasks</name><t anchor="_e7ff8893-2c49-468e-95f9-6616392b619d">Use VPOLL for advertising a task to a pool of possible ATTENDEEs and then select the respondent to assign one or more assignees.</t>
<t anchor="_9e1ecbc7-0697-4404-ad99-ff892136f7b1">Introduce POLL-MODE:ASSIGNMENT</t>
<t anchor="_7278d697-32cc-41ec-bd13-9a1763f811b2">Need to indicate number of assignees required.</t>
<t anchor="_993d6850-9fba-4bea-82e2-16f737e5ec04">Potentially different types of response e.g. ACCEPT or DECLINE, or a weighting e.g. 0 - 100</t>
<t anchor="_e8a2e93f-be11-4520-8649-71b1d35aad85">Take into FREEBUSY discussion.</t></section>
<section anchor="_subscribing_to_task_updates"><name>Subscribing to task updates</name>

<t anchor="_d3360672-a6b8-4e87-aad4-80d7bfef205f">Stakeholders should have the ability to subscribe to categories / types of tasks on an ongoing basis. Reference calendarserver.org notifications draft</t>
</section></section>
  </back>
</rfc>
