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 {
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 {
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 {
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 {
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 {
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 {
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"
}
}