Tasks

Enterprise

Bacula Enterprise Only

This solution is only available for Bacula Enterprise. For subscription inquiries, please reach out to sales@baculasystems.com.

Bacula Enterprise Microsoft 365 Plugin can protect M365 To-Do task lists associated to users and M365 Planner tasks associated to Teams. To-Do task lists are considered when user* parameters are defined, while Planner tasks are considered when 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 limitations:

  • 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 a web 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

Permissions model:

  • To-Do tasks (users): delegated permissions are required for backup and restore.

  • Planner tasks (groups): - Backup uses application permissions. - Restore to M365 uses delegated permissions.

For delegated flows, refer to Delegated Permissions.

Note

Starting from Bacula Enterprise 18.2.5, Planner backup runs through application 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 equal to or contain 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 their original user or into 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 their original groups (teams) or into 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"
   }
}

Go back to: Services.