Tasks

Bacula Enterprise Microsoft 365 Plugin can protect M365 Todo Tasklists associated to users and M365 Planner tasks associated to Teams. Todo Taskslists will be considered in case user* parameters are defined, while Planner tasks will be considered in case group* parameters are defined.

For Todo Tasklists:

  • It is possible to select what users to backup (user* parameters) and also the specific tasklists to include/exclude (tasklists* parameters).

The information protected by this module is detailed below:

  • Users:

    • Task Lists

    • Tasks

  • Groups:

    • Planner plan

    • Planner buckets

    • Planner tasks

This module includes the following features:

  • Incremental/Differential backup

It is important to note here that Incremental or Differential backups won’t take modified tasks. The reason is task objects do not store the information of last modification date, so we cannot determine if they were modified after creation. Therefore the recommendation is to run regularly Full backups to retrieve any modified task.

Please note the following limitatons:

  • Todo Tasks LinkedResources are not supported. As of Bacula version 14.0, these objects are returned as empty entities from Graph API. This limitation is expected to be addressed in the future.

  • Planner tasks won’t keep their original order once they are restored and visualized through the Teams App or using the internet browser.

Catalog structure for tasks is presented below:

  • User tasks are stored in:

    • /@m365/tenantname/users/usermail/tasks/tasklist_name

      • Default folder name is ‘Tasks’

      • Each element has the special extension ‘.todo.task’

  • Group planner tasks are stored in:

    • /@m365/tenantname/group/groupdisplayname/tasks/plan_name/plan_bucket/planner_task_name

      • Tasks have the special extension ‘.planner.task’. However other task related objects are stored also with different extensions. These objects are: task details, assignedto task board task format, progress task board task format and bucket task board task format

Please note that this module needs Delegated permissions to work, so it is necessary to login using the Device Auth Flow in order to have enough permissions to get the data: Delegated permissions

Backup parameters

The list below shows the specific backup parameters that can be set up in order to control the behavior of the tasks module.

In order to select the tasks module, the common service parameter must be equals or be containing the value tasks.

Entities that can include mailboxes are: users.

Option

Required

Default

Values

Example

Description

tasklists

No

Strings representing existing todo tasklists for the given users separated by ‘,’

ProjectA, ProjectB

Backup only specified tasklists belonging to the selected users

tasklists_exclude

No

Strings representing existing todo tasklists for the given users separated by ‘,’

Personal

Exclude selected tasklists belonging to the selected users

tasklists_regex_include

No

Valid regex

.*Company

Backup matching tasklists. Please, only provide list parameters (files + files_exclude) or regex ones. But do not try to combine them.

tasklists_regex_exclude

No

Valid regex

.*Plan

Exclude matching tasklists from the selection. Please, only provide list parameters (files + files_exclude) or regex ones. But do not try to combine them. If this is the only parameter found for selection, all elements will be included and this list will be excluded.

plannerplans

No

Strings representing existing planner plans for the given groups separated by ‘,’

ProjectA, ProjectB

Backup only specified plannerplans belonging to the selected groups

plannerplans_exclude

No

Strings representing existing planner plans for the given groups separated by ‘,’

Personal

Exclude selected planner plans belonging to the selected groups

plannerplans_regex_include

No

Valid regex

.*Company

Backup matching planner plans. Please, only provide list parameters (files + files_exclude) or regex ones. But do not try to combine them.

plannerplans_regex_exclude

No

Valid regex

.*Plan

Exclude matching planner plans from the selection. Please, only provide list parameters (files + files_exclude) or regex ones. But do not try to combine them. If this is the only parameter found for selection, all elements will be included and this list will be excluded.

Restore

The list below shows the subset of restore parameters that can be used to control the behavior of tasks module restore operations:

  • destination_user, destination_group, send_report, debug, tasklist_name, tasklist_skip_sharedwithme

Use cases

The following restore scenarios are supported:

  • Restore task lists and their tasks into to their original user or to a different user

    • Restore parameters implied: destination_user

    • Destination tasklist (new or existent one): tasklist_name

    • Skip or not shared tasklists: tasklist_skip_sharedwithme

  • Restore planner plans and their tasks into to their original groups (teams) or to a different group (team)

    • Restore parameters implied: destination_group

    • Destination plan (new or existent one): plan_name

    • Create or not associated tab: plan_create_tab

For more details about the behavior of each parameter, please check the general section of restore parameters.

Fileset examples

Backup all todo tasks of one user:

Fileset Example
FileSet {
   Name = fs-m365-tasks-adelev
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5 user=adelev@baculaenterprise.onmicrosoft.com"
   }
}

Backup todo tasklist ‘work’ of one user:

Fileset Example
FileSet {
   Name = fs-m365-tasks-adelev
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5 user=adelev@baculaenterprise.onmicrosoft.com tasklists=work"
   }
}

Backup all todo tasks from all users

Fileset Example
FileSet {
   Name = fs-m365-tasks-all
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5"
   }
}

Backup all planner plans of one group:

Fileset Example
FileSet {
   Name = fs-m365-planner-dev
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5 group=DevTeam"
   }
}

Backup all planner plans from all groups

Fileset Example
FileSet {
   Name = fs-m365-planner-all
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5"
   }
}

Backup planner plan ‘product’ of one user:

Fileset Example
FileSet {
   Name = fs-m365-tasks-adelev
   Include {
      Options { signature = MD5 }
      Plugin = "m365: service=tasks tenant=57uia43-d107-17a2-a2g2-aa53c10tdahc objectid=56ddf1h9-
   eb5d-42nf-bac7-7b019fd284g5 group=DevTeam plannerplans=product"
   }
}