
Configuring Microsoft Planner as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Microsoft Planner option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need to authorize Nekt to access your Microsoft Planner data using OAuth. Click on the Microsoft Authorization button and log in with your Microsoft account that has access to the Planner plans you want to sync. The authorization flow will request the following permissions:- Access to Microsoft Graph API
- Read access to Groups and Planner data
You may need the approval of an administrator to grant the necessary permissions to the Nekt application.If you are not an administrator, you can request the approval from an administrator by clicking on the Request approval button and providing the reason for the approval.The administrator will then need to approve the request by clicking on the Approve button on the Microsoft Entra ID portal.Once the approval is granted, the Nekt application will have the necessary permissions to access your Microsoft Planner data.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: FULL_TABLE sync is used for all streams.
Incremental sync is not supported. The Microsoft Planner API does not provide reliable modification timestamps for incremental syncing, so all streams use full table sync.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Below you’ll find all available data streams from Microsoft Planner and their corresponding fields:Groups
Groups
Stream containing Microsoft 365 groups that can have Planner plans.Key Fields:
id- Unique identifier for the groupdisplayName- Group display namedescription- Group descriptioncreatedDateTime- When the group was created
mail- Group email addressmailNickname- Mail nickname/alias
visibility- Group visibility (Public or Private)classification- Classification level (e.g., low, medium, high business impact)groupTypes[]- Array of group types (e.g., “Unified” for Microsoft 365 groups)expirationDateTime- When the group is set to expire (if applicable)
Plans
Plans
Stream containing Planner plans within Microsoft 365 groups.Key Fields:
id- Unique identifier for the plantitle- Plan title/namecreatedDateTime- When the plan was createdowner- (Deprecated) Owner group ID; usecontainer.containerIdinstead
container.containerId- ID of the group or roster containing the plancontainer.type- Type of container (e.g., “group”)container.url- URL of the container resource
createdBy.user.id- ID of the user who created the plancreatedBy.user.displayName- Display name of the creatorcreatedBy.application.id- ID of the application used to create the plancreatedBy.application.displayName- Application display name
Buckets
Buckets
Stream containing buckets (columns) within Planner plans for organizing tasks.Key Fields:
id- Unique identifier for the bucketname- Bucket display name (e.g., “To Do”, “In Progress”, “Done”)planId- ID of the plan this bucket belongs toorderHint- Order hint for displaying buckets in list view
Labels
Labels
Stream containing plan category labels (up to 25 custom labels per plan).Key Fields:
id- Plan ID (matchesplans.id)category1throughcategory25- Custom label names defined for the plan
Labels are stored at the plan level. Tasks reference these labels via
appliedCategories (e.g., category1: true means the task has the first label applied).Tasks
Tasks
Stream containing individual tasks within Planner plans.Key Fields:
id- Unique identifier for the tasktitle- Task titledescription- Task description (ifhasDescriptionis true)planId- ID of the plan containing this taskbucketId- ID of the bucket (column) this task is in
percentComplete- Completion percentage (0, 25, 50, 75, or 100)priority- Priority level (0-10, where lower is higher priority)hasDescription- Whether the task has a description
createdDateTime- When the task was createdstartDateTime- Task start datedueDateTime- Task due datecompletedDateTime- When the task was completed
assignments- JSON string of user assignments (user ID → assignment details)appliedCategories- JSON string of applied labels (category1-category25)
createdBy.user.id- ID of user who created the taskcreatedBy.user.displayName- Display name of creatorcompletedBy.user.id- ID of user who completed the taskcompletedBy.user.displayName- Display name of completer
checklistItemCount- Total number of checklist itemsactiveChecklistItemCount- Number of incomplete checklist itemsreferenceCount- Number of external references/attachments
orderHint- Order hint for list viewassigneePriority- Order hint for assignee’s task listconversationThreadId- ID of the conversation threadpreviewType- Task preview type (automatic, noPreview, checklist, description, reference)
Data Model
The following diagram illustrates the relationships between the data streams in Microsoft Planner. Groups contain Plans, which in turn contain Buckets, Tasks, and Labels.Use Cases for Data Analysis
This guide outlines valuable business intelligence use cases when consolidating Microsoft Planner data, along with ready-to-use SQL queries that you can run on Explorer.1. Task Completion Overview
Track task completion rates across plans and identify bottlenecks. Business Value:- Monitor project progress
- Identify overdue tasks
- Track team productivity
SQL query
SQL query
- AWS
- GCP
Sample Result
Sample Result
| plan_name | total_tasks | completed_tasks | overdue_tasks | avg_completion_pct | completion_rate_pct |
|---|---|---|---|---|---|
| Q1 Marketing Campaign | 45 | 32 | 5 | 71.1 | 71.1 |
| Product Launch 2024 | 38 | 28 | 2 | 73.7 | 73.7 |
| Website Redesign | 52 | 18 | 12 | 34.6 | 34.6 |
| Customer Onboarding | 23 | 20 | 0 | 87.0 | 87.0 |
2. Tasks by Bucket (Status Distribution)
Analyze task distribution across buckets to understand workflow status. Business Value:- Visualize work-in-progress
- Identify workflow bottlenecks
- Balance workload across stages
SQL query
SQL query
- AWS
- GCP
Sample Result
Sample Result
| plan_name | bucket_name | task_count | completed | in_progress | not_started |
|---|---|---|---|---|---|
| Q1 Marketing Campaign | To Do | 15 | 0 | 3 | 12 |
| Q1 Marketing Campaign | In Progress | 12 | 0 | 12 | 0 |
| Q1 Marketing Campaign | Done | 18 | 18 | 0 | 0 |
| Product Launch 2024 | Backlog | 8 | 0 | 0 | 8 |
3. Overdue Tasks Report
Identify tasks that are past their due date and need attention. Business Value:- Prioritize late tasks
- Track deadline adherence
- Improve project timeline management
SQL query
SQL query
- AWS
- GCP
Sample Result
Sample Result
| task_title | plan_name | bucket_name | due_date | days_overdue | percent_complete | priority |
|---|---|---|---|---|---|---|
| Update documentation | Website Redesign | In Progress | 2024-11-01 | 26 | 50 | 1 |
| Review contracts | Q1 Marketing Campaign | To Do | 2024-11-10 | 17 | 0 | 3 |
| Design mockups | Product Launch 2024 | In Progress | 2024-11-15 | 12 | 75 | 5 |
Implementation Notes
Stream Hierarchy
The connector extracts data using a parent-child relationship:- Groups are extracted first (Microsoft 365 groups with Planner enabled)
- Plans are extracted for each group
- Buckets, Labels, and Tasks are extracted for each plan
JSON Fields
Some fields are stored as JSON strings for compatibility with data lake formats:tasks.assignments- Contains user assignment detailstasks.appliedCategories- Contains applied label categories
JSON_EXTRACT or equivalent functions to parse these fields in your queries.
Priority Values
Task priority is stored as an integer (0-10):1= Urgent3= Important5= Medium (default)9= Low
Percent Complete Values
Microsoft Planner uses specific values for completion percentage:0= Not started25= Started50= Halfway75= Almost done100= Completed