Task export/import

About export/import

Task export and import are used to export and import tasks from a plan. You can export or import a whole plan or just part of it.

When you import tasks, they are imported in an initial state. You cannot use import to update existing tasks.

When you export tasks, you can choose whether the export should include information about the current state, for example for reporting, or whether just to export enough to re-import the tasks in an initial state. If you export tasks in the current state and then import them, the imported tasks will always be in the initial state.

The full version of export and import use JSON. An alternative tabular format is provided which can be exported and imported in Excel .xlsx format or in CSV. The tabular version does not have all the features of the JSON version because parts of the full structure cannot be expressed in a tabular format.

The task export and import are intended to support the user-focussed activities of getting a summary of current state and export/import feature saving, modifying and uploading project plans. The import feeds into the worker create functions. They are not intended as a definitive export and import of the underlying data:

  • The exports do not contain the process definitions, only the process references. The import has to be resolved by an import process that creates the workers with the appropriate definitions.
  • Events are not exported, which means that the audit history of the tasks is not available.
  • In the tabular export and import, only a minimum of data is exported and imported.

Full JSON

The JSON below illustrates the structure of the full export.

Items in green are also available in the tabular export.

Items in bold are imported. Others are only exported when the current state is exported.

[
{
"taskNumber": nnn,
"reference": "workerReference",
"name": "Worker name",
"processTypeReference": "processTypeReference",
"processTypeName": "Process type name",
"actionRequired": true|false,
"lastActivityTimestamp": "yyyy-mm-ddThh:mm:ss.sss",
"statusReference": "statusReference",
"statusName": "Status name",
"message": "message",
"channels": [
{
"role": "connectionRole",
"reference": "connection.node.reference",
"name": "Connection name",
"path": "Connection folder path",
"local": "Local path"
}
],
"groups": [
{
"reference": "folder.node.reference",
"name": "Folder name",
"path": "Folder path"
}
],
"parent": nnn,
"sequence": "sequenceNumber",
"links": [
{
"type": "linkType",
"link": nnn
}
],
"config": {
.. config options ..
},
"data": {
"task": {
"description": "Task description",
       "attachments": [
.. attachments, an array of file info structures ..
],

"mode": "standalone|owner|partner",
"phase": "initial|prepare|assign|wait|ready|progress|submit|redo|complete|cancel|info",
"hold": false|true,
"plannedStartDate": "yyyy-mm-ddThh:mm:ss",
"plannedFinishDate": "yyyy-mm-ddThh:mm:ss",
"actualStartDate": "yyyy-mm-ddThh:mm:ss",
"actualFinishDate": "yyyy-mm-ddThh:mm:ss",
"startDependenciesMet": false|true,
"started": false|true,
"finishDependenciesMet": false|true,
"finished": false|true,
"useChildFinish": false|true,
"assignmentStatus": "initial|assigned|ready|connectionRequired|connectionRequested|
connectionDeclined|sent|received|accepted|declined|referred|recalled|error",
"assignee": {
"name": "name",
"self": false|true,
"path": "path",
"local": "path",
"email": "email",
"reference": "connection"
},
"referee": {
"name": "name",
"group": "path",
"local": "path",
"email": "email",
"reference": "connection"
}
},
"reminder": {
"duePeriod": nn,
"dueTimestamp": "yyyy-mm-ddThh:mm:ss",
"endOfDay": "hh:mm:ss",
"reminderPeriod": nn,
"nextReminderTimestamp": "yyyy-mm-ddThh:mm:ss",
"interval": nn,
"reminderTitle": "Title",
"reminderText": "Text",
"overdueTitle": "Title",
"overdueText": "Text",
"overduePeriod": nn,
"on": true|false,
"active": true|false,
"open": "true|false
},
"init": {
.. init data ..
},
"data": {
.. data ..
},
 "request": {
"instructions": "Request instructions",
.. request data ..
},
"response": {
.. response data ..
},
"otherDataRef": {
.. other data ..
}, .. more data areas ..
}
}, .. more tasks ..
}

Notes:

  • The JSON is an array of objects, one per task.
  • The taskNumbers provide a simple sequence number.
  • The node references for links and parent are replaced with task numbers. If the tasks are not in the exported, the link or parent is suppressed.
  • The import use the task numbers to resolve parent and link references.
  • All data areas are exported within a data object, including the task data.
  • Only the task, data, init, request and reminder data areas are imported.
  • See Task Script for documentation on the task data area.
  • Only some of the reminder fields are shown. See Reminder Script for documentation.
  • Channels that correspond to the assignee role are not imported.
  • The channel local path are read and set on the init data, such that data.init.connectionPaths[role] = local.
  • Files are exported using file info structures. If you delete the tasks from which the files were exported, the files may no longer be available when imported.

Tabular format

The tabular format is designed to give a simple, familiar view to the main fields, to cover the majority of requirements. It is not intended to be definitive - if the tabular format does not work for you, use JSON.

The columns are described in the table below. Columns in bold are used for the import.

Sequence The task number (not the sequence). Used to identify the task with the import or export.
Task The task name. Can also be given as Task name.
Description The task description.
Task 2, Task 3, etc.

Additional fields to show parent and sequence. The column headings are implied if not included, i.e. a blank column after Task is assumed to be Task 2, etc. For example, in the table below, B and C are sub-tasks of A, with sequence numbers 1 and 2.

Sequence Task  
1 Task A  
2   Task B
3   Task C
4 Task D  

 

Template

On export, contains process type name. On import, can contain process type name or process type reference.

Action required

 

Last activity timestamp

 

Status

The status name.

Message

The worker message.

Dependencies

This encodes the links which have dependency codes in them. The dependencies are a comma delimited list, each one of which is of the form nnndd, where nnn is the predecessor task and dd is the dependency type. The dependency types use short forms of the readable (not internal) dependency types, so we have:

  • fs - finish-start (internal f*)
  • ss - start-finish (internal s*)
  • ff - finish-finish (internal *f)
  • sf - start-finish (internal *s)
  • ssff - start-start, finish-finish (internal sf)

For example, the dependency "3fs, 5ff" means that this cannot start until task number 3 has finished and cannot be considered finished until task 5 has finished.

If no type is give, fs is assumed.

The codes can be in upper or lower case. Codes can be delimited with semi colons instead of commas. Depedendencies can also be passed as Predecessors.

Mode

 

Phase

 

Hold

 

Planned start date

On import, can also be given as Start.

Planned finish date

On import, can also be given as Finish.

Actual start date

 

Actual finish date

 

Start dependencies met

 

Started

 

Finish dependencies met

 

Finished

 

Use child finish

 

Assignment status

 

Assigned to

A display of the assignee. On import should be:

Name <email address>
or
Local Path@Connection name

Referred to

A display of the referee.

Instructions

The request instructions.

All column headers are normlised by removing spaces and underscores and converting to lower case. So "Planned Start Date", "Planned start date", "planned_start_date" and "plannedstartdate" are all equivalent.