@blickwerk/n8n-nodes-microsoft-planner 1.5.5 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +533 -459
  3. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.d.ts +2 -2
  4. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js +27 -32
  5. package/dist/credentials/MicrosoftPlannerOAuth2Api.credentials.js.map +1 -0
  6. package/dist/nodes/MicrosoftPlanner/BucketDescription.js +30 -23
  7. package/dist/nodes/MicrosoftPlanner/BucketDescription.js.map +1 -0
  8. package/dist/nodes/MicrosoftPlanner/CommentDescription.js +10 -14
  9. package/dist/nodes/MicrosoftPlanner/CommentDescription.js.map +1 -0
  10. package/dist/nodes/MicrosoftPlanner/GenericFunctions.d.ts +15 -18
  11. package/dist/nodes/MicrosoftPlanner/GenericFunctions.js +222 -70
  12. package/dist/nodes/MicrosoftPlanner/GenericFunctions.js.map +1 -0
  13. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.d.ts +6 -10
  14. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js +100 -826
  15. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.js.map +1 -0
  16. package/dist/nodes/MicrosoftPlanner/MicrosoftPlanner.node.json +18 -0
  17. package/dist/nodes/MicrosoftPlanner/PlanDescription.js +207 -57
  18. package/dist/nodes/MicrosoftPlanner/PlanDescription.js.map +1 -0
  19. package/dist/nodes/MicrosoftPlanner/SharedFields.d.ts +10 -0
  20. package/dist/nodes/MicrosoftPlanner/SharedFields.js +316 -0
  21. package/dist/nodes/MicrosoftPlanner/SharedFields.js.map +1 -0
  22. package/dist/nodes/MicrosoftPlanner/TaskDescription.d.ts +1 -1
  23. package/dist/nodes/MicrosoftPlanner/TaskDescription.js +226 -583
  24. package/dist/nodes/MicrosoftPlanner/TaskDescription.js.map +1 -0
  25. package/dist/nodes/MicrosoftPlanner/actions/bucket.d.ts +2 -0
  26. package/dist/nodes/MicrosoftPlanner/actions/bucket.js +72 -0
  27. package/dist/nodes/MicrosoftPlanner/actions/bucket.js.map +1 -0
  28. package/dist/nodes/MicrosoftPlanner/actions/comment.d.ts +2 -0
  29. package/dist/nodes/MicrosoftPlanner/actions/comment.js +100 -0
  30. package/dist/nodes/MicrosoftPlanner/actions/comment.js.map +1 -0
  31. package/dist/nodes/MicrosoftPlanner/actions/plan.d.ts +4 -0
  32. package/dist/nodes/MicrosoftPlanner/actions/plan.js +116 -0
  33. package/dist/nodes/MicrosoftPlanner/actions/plan.js.map +1 -0
  34. package/dist/nodes/MicrosoftPlanner/actions/task.d.ts +4 -0
  35. package/dist/nodes/MicrosoftPlanner/actions/task.js +392 -0
  36. package/dist/nodes/MicrosoftPlanner/actions/task.js.map +1 -0
  37. package/dist/nodes/MicrosoftPlanner/planner.svg +51 -51
  38. package/dist/package.json +61 -0
  39. package/package.json +61 -63
package/README.md CHANGED
@@ -1,459 +1,533 @@
1
- # n8n-nodes-microsoft-planner
2
-
3
- This is an n8n community node that allows you to interact with Microsoft Planner in your n8n workflows.
4
-
5
- [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
6
-
7
- [Microsoft Planner](https://www.microsoft.com/en-us/microsoft-365/business/task-management-software) is a task management tool that helps teams organize, assign, and collaborate on tasks.
8
-
9
- ## Installation
10
-
11
- Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
12
-
13
- ### Community Node
14
-
15
- 1. Go to **Settings > Community Nodes** in your n8n instance
16
- 2. Select **Install**
17
- 3. Enter `@blickwerk/n8n-nodes-microsoft-planner` in **Enter npm package name**
18
- 4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
19
- 5. Select **Install**
20
-
21
- After installing the node, you can use it like any other node in your workflows.
22
-
23
- ### Manual Installation
24
-
25
- To install manually:
26
-
27
- ```bash
28
- npm install @blickwerk/n8n-nodes-microsoft-planner
29
- ```
30
-
31
- ## Prerequisites
32
-
33
- You need to have:
34
- - An active Microsoft 365 subscription
35
- - A Microsoft Planner plan created
36
- - Azure AD App Registration with the following API permissions:
37
- - `Tasks.ReadWrite` - Read and write tasks
38
- - `Group.ReadWrite.All` - Read and write all groups (required for Planner and comments)
39
- - `User.Read.All` - Read all users (required for user assignment by email)
40
-
41
- ## Setting up Azure AD App
42
-
43
- 1. Go to [Azure Portal](https://portal.azure.com/)
44
- 2. Navigate to **Azure Active Directory > App registrations**
45
- 3. Click **New registration**
46
- 4. Give it a name (e.g., "n8n Microsoft Planner Integration")
47
- 5. Select **Accounts in this organizational directory only**
48
- 6. Add redirect URI: `https://your-n8n-instance.com/rest/oauth2-credential/callback`
49
- 7. Click **Register**
50
-
51
- ### Configure API Permissions
52
-
53
- 1. Go to **API permissions**
54
- 2. Click **Add a permission**
55
- 3. Select **Microsoft Graph**
56
- 4. Select **Delegated permissions**
57
- 5. Add the following permissions:
58
- - `Tasks.ReadWrite` - Read and write tasks
59
- - `Group.ReadWrite.All` - Read and write all groups (required for Planner and comments)
60
- - `User.Read.All` - Read all users' basic profiles (required for user assignment)
61
- 6. Click **Grant admin consent**
62
-
63
- **Note**: The `User.Read.All` permission is required if you want to assign tasks to users by email address. The `Group.ReadWrite.All` permission is required for both Planner operations and creating/reading comments.
64
-
65
- ### Create Client Secret
66
-
67
- 1. Go to **Certificates & secrets**
68
- 2. Click **New client secret**
69
- 3. Add a description and select expiration
70
- 4. Copy the **Value** (you won't see it again!)
71
-
72
- ### Get Application Details
73
-
74
- - **Client ID**: Found on the app overview page
75
- - **Client Secret**: The value you copied in the previous step
76
-
77
- ## Credentials
78
-
79
- Configure the Microsoft Planner OAuth2 API credentials in n8n:
80
-
81
- 1. In n8n, go to **Credentials > New**
82
- 2. Search for **Microsoft Planner OAuth2 API**
83
- 3. Enter your **Client ID** and **Client Secret**
84
- 4. Click **Connect my account**
85
- 5. Complete the OAuth flow
86
-
87
- ## Features
88
-
89
- - **Resource Locator UI**: Choose between "From List" (dropdown) or "By ID" (manual input) for Buckets
90
- - **User Assignment**: Assign tasks to users by email address
91
- - **Priority Management**: Easy-to-use priority dropdown (Urgent, Important, Medium, Low)
92
- - **Comprehensive Task Support**: Full support for Task details including Checklist items and Attachments
93
- - **Full CRUD Support**: Manage Tasks, Plans, and Buckets
94
- - **Comment Support**: Create and retrieve comments on tasks
95
-
96
- ## Operations
97
-
98
- ### Task
99
-
100
- - **Create** - Create a new task (supports Checklist and Attachments)
101
- - **Get** - Get a task by ID (optionally include details)
102
- - **Get Many** - Get multiple tasks from a plan or bucket
103
- - **Update** - Update an existing task (supports Checklist and Attachments)
104
- - **Delete** - Delete a task
105
- - **Get Files** - Get all files attached to a task
106
-
107
- ### Plan
108
-
109
- - **Create** - Create a new plan in a group
110
- - **Get** - Get a plan by ID (optionally include details)
111
- - **Get Many** - Get all plans (My Plans or Group Plans)
112
- - **Update** - Update a plan (supports Title, Category Labels, and Sharing)
113
- - **Delete** - Delete a plan
114
-
115
- ### Bucket
116
-
117
- - **Create** - Create a new bucket in a plan
118
- - **Get** - Get a bucket by ID
119
- - **Get Many** - Get all buckets in a plan
120
- - **Update** - Update a bucket title and order
121
- - **Delete** - Delete a bucket
122
-
123
- ### Comment
124
-
125
- - **Create** - Create a new comment on a task
126
- - **Get Many** - Get all comments from a task
127
-
128
- ## Usage
129
-
130
- ### Creating a Task
131
-
132
- To create a task:
133
- 1. Enter the **Plan ID** (you can find this in Microsoft Planner URL or via Graph Explorer)
134
- 2. Select a **Bucket** from the dropdown (loads automatically based on the Plan ID)
135
- 3. Enter the **Title** of the task
136
-
137
- Optional fields:
138
- - **Description**: Detailed task description
139
- - **Priority**: Select from dropdown
140
- - Urgent (highest priority)
141
- - Important
142
- - Medium (default)
143
- - Low
144
- - **Assigned To**: Comma-separated list of user emails (e.g., `user1@domain.com, user2@domain.com`)
145
- - **Due Date Time**: When the task should be completed
146
- - **Start Date Time**: When work on the task should begin
147
- - **Percent Complete**: Task completion percentage (0-100)
148
- - **Checklist**: Add multiple checklist items with titles and checked status
149
- - **Attachments**: Add external references/attachments with URLs, aliases, and types (Word, Excel, etc.)
150
- - **Description**: Detailed task description (stored in task details)
151
-
152
- ### Getting Tasks
153
-
154
- **Get a single task:**
155
- - Enter the **Task ID** manually (no dropdown available for single task lookups)
156
-
157
- **Get many tasks:**
158
- - Choose filter type: **Plan** or **Bucket**
159
- - Enter the **Plan ID**
160
- - If filtering by Bucket: Select bucket from dropdown or enter Bucket ID manually
161
- - Set a limit or return all tasks
162
-
163
- ### Updating a Task
164
-
165
- To update a task:
166
- 1. Enter the **Task ID** manually
167
- 2. Update any of these fields:
168
- - Title
169
- - Description
170
- - Priority (via dropdown)
171
- - Assigned users (via email list)
172
- - **Due Date Time**
173
- - **Start Date Time**
174
- - **Percent Complete**
175
- - **Move to different bucket**
176
- - **Checklist**: Add new items or update existing ones (supports "Replace All" mode)
177
- - **Attachments**: Add new references (supports "Replace All" mode)
178
- - **Description**: Update the task description
179
-
180
- ### Getting Files from a Task
181
-
182
- To get all files attached to a task:
183
- 1. Enter the **Task ID** manually
184
- 2. The operation returns:
185
- - **taskId**: The task ID
186
- - **fileCount**: Number of attached files
187
- - **files**: Array of file objects with:
188
- - **url**: Decoded SharePoint URL (ready to use)
189
- - **alias**: Display name of the file
190
- - **type**: File type (e.g., PowerPoint, Word, Excel, PDF, Other)
191
- - **previewPriority**: Priority for preview display
192
- - **lastModifiedDateTime**: When the file reference was last modified
193
- - **lastModifiedBy**: Who last modified the reference
194
-
195
- ### Creating a Comment
196
-
197
- To create a comment on a task:
198
- 1. Select **Comment** as the resource
199
- 2. Choose **Create** operation
200
- 3. Enter the **Task ID** manually
201
- 4. Enter the **Content** of the comment
202
- 5. Optionally select **Content Type**:
203
- - **Text** (default): Plain text that will be wrapped in HTML
204
- - **HTML**: Custom HTML content
205
-
206
- The comment will be created as a conversation thread in the Microsoft 365 Group associated with the plan. If the task doesn't have a conversation thread yet, one will be created automatically.
207
-
208
- ### Getting Comments from a Task
209
-
210
- To get all comments from a task:
211
- 1. Select **Comment** as the resource
212
- 2. Choose **Get Many** operation
213
- 3. Enter the **Task ID** manually
214
- 4. The operation returns:
215
- - **taskId**: The task ID
216
- - **commentCount**: Number of comments
217
- - **comments**: Array of comment objects with:
218
- - **id**: Comment ID
219
- - **content**: Comment body (HTML)
220
- - **from**: Author information
221
- - **createdDateTime**: When the comment was created
222
- - **lastModifiedDateTime**: When the comment was last modified
223
-
224
- **Note**: Once a comment is posted in Planner, it cannot be deleted or edited via the Microsoft Graph API or the Planner UI (for Basic plans). This is a limitation of the Microsoft 365 Groups conversation system that Planner uses.
225
-
226
- ### Working with Plans
227
-
228
- The **Plan** resource allows you to manage Microsoft Planner plans:
229
-
230
- - **Create**: Requires an **Owner Group** (selected from dropdown or entered as ID) and a **Title**.
231
- - **Get Many**:
232
- - **My Plans**: Lists plans the authenticated user is a member of.
233
- - **Group Plans**: Requires a **Group ID** to list plans owned by that specific group.
234
- - **Get**: Retrieve full plan metadata. Enable **Include Details** to get category descriptions (labels) and other metadata.
235
- - **Update**:
236
- - Change the plan **Title**.
237
- - **Category Descriptions**: Update the labels for the 25 color-coded categories (Category 1-25).
238
- - **Shared With**: Update plan members using a JSON mapping of user IDs.
239
- - **Delete**: Permanently removes the plan.
240
-
241
- ### Working with Buckets
242
-
243
- The **Bucket** resource manages the columns or categories within a plan:
244
-
245
- - **Create**: Requires a **Plan ID** and a **Name**.
246
- - **Upsert**: When enabled, the node will check if a bucket with the same name already exists in the plan and return that instead of creating a duplicate.
247
- - **Get Many**: Lists all buckets within a specific **Plan ID**.
248
- - **Update**: Change the bucket **Name** and its **Order Hint** (controlling the position in the UI).
249
- - **Delete**: Removes the bucket from the plan.
250
-
251
- ### How to Find Plan IDs
252
-
253
- You can find your Plan ID in several ways:
254
-
255
- 1. **From Planner URL**: Open Microsoft Planner in browser, the URL contains the Plan ID:
256
- ```
257
- https://tasks.office.com/.../ planId=YOUR_PLAN_ID_HERE /...
258
- ```
259
-
260
- 2. **Via Microsoft Graph Explorer**:
261
- - Go to https://developer.microsoft.com/graph/graph-explorer
262
- - Sign in
263
- - Run: `GET /me/planner/plans`
264
- - Copy the `id` field from the plan you want
265
-
266
- ### Resource Locator (From List / By ID)
267
-
268
- When creating tasks or filtering by bucket:
269
- - **From List**: Select from dropdown (automatically loads based on Plan ID)
270
- - **By ID**: Manually enter the ID if you already know it
271
-
272
- For Get/Update/Delete operations, you need to manually enter the Task ID.
273
-
274
- ## Compatibility
275
-
276
- Tested with n8n version 1.0.0 and above.
277
-
278
- ## Resources
279
-
280
- - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
281
- - [Microsoft Graph Planner API documentation](https://docs.microsoft.com/en-us/graph/api/resources/planner-overview)
282
- - [Microsoft Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer)
283
-
284
- ## Version History
285
-
286
- ### 1.5.5
287
- - **Bug Fix: $select Duplication**
288
- - Fixed an issue where the `$select` query parameter was sent twice during pagination, causing "Query option '$select' was specified more than once" error.
289
-
290
-
291
- ### 1.5.4
292
- - **New Feature: $select Support**
293
- - Added "Select Properties" field to "Get Many" operations for Tasks, Plans, Buckets, and Comments.
294
- - **Improved Task Assignments**
295
- - Fixed silent failures for task assignments.
296
- - Added robust user lookup (ID, Email, UPN) and error reporting for missing users.
297
- - Added support for Array inputs (expressions) in the "Assigned To" field.
298
-
299
-
300
- ### 1.5.3
301
- - **UI Improvements for Attachments and Checklists**
302
- - Refactored to use a grouped UI pattern for better usability
303
- - Replaced separate fields with a unified structure using `fixedCollection`
304
- - **Updated Logic for Updates**
305
- - Replaced "Replace All" toggle with a clearer **Operation Mode** dropdown (Append vs Replace)
306
- - Renamed "Mode" to "Input Mode" for better clarity between Manual and JSON inputs
307
- - Fixed logic for replacing items with matching IDs during updates
308
-
309
-
310
- ### 1.5.2
311
- - **Maintenance release**
312
- - Removed runtime dependency on `n8n-core` to comply with n8n community node requirements
313
- - No functional changes to node behavior
314
-
315
- ### 1.5.1
316
- - **Maintenance release**
317
- - Replaced deprecated `requestOAuth2` helper with `httpRequestWithAuthentication` in Microsoft Planner API requests
318
- - Removed `console` logging from the Microsoft Planner node and helper to satisfy n8n community package scan requirements
319
-
320
- ### 1.5.0
321
- - **Major feature release** (with contributions from United Workspace GmbH)
322
- - **Added Comment Support**
323
- - Create and retrieve comments on Planner tasks
324
- - Automatic conversation thread management
325
- - Support for both HTML and plain text comments
326
- - **Enhanced Task Details**
327
- - **Checklist Support**: Full support for adding and managing checklist items
328
- - **Attachments (References)**: Support for adding external URLs and files to tasks
329
- - **Replace All Options**: New toggles to replace existing checklists or attachments entirely
330
- - **Plan Resource Support**
331
- - CRUD operations for Plans
332
- - Manage Category Labels (1-25)
333
- - Manage Plan members (Shared With)
334
- - **Bucket Resource Support**
335
- - CRUD operations for Buckets
336
- - Manage bucket names and positioning (Order Hint)
337
- - **Robust Encoding**: Improved handling of special characters in attachment URLs
338
- - **Internal Improvements**: Comprehensive build audit, improved error handling and data fetch reliability
339
-
340
- ### 1.4.0
341
- - **Updated branding**
342
- - New Planner icon/logo
343
- - Added About Blickwerk Media section with company info and social links
344
-
345
- ### 1.3.9
346
- - **Added Get Files operation**
347
- - Retrieve all files attached to a task
348
- - URLs are properly decoded for direct use
349
- - Returns file metadata including alias, type, and last modified info
350
-
351
- ### 1.3.8
352
- - **Fixed priority values**
353
- - Corrected priority mapping: Urgent (1), Important (3), Medium (5), Low (9)
354
- - Priority values now match Microsoft Planner API specifications
355
-
356
- ### 1.3.7
357
- - **Fixed Update Task response handling**
358
- - Fetch complete updated task data after PATCH operation
359
- - Always returns full task object with all current values
360
- - Fixes empty array and undefined description issues
361
-
362
- ### 1.3.6
363
- - **Improved Update Task response**
364
- - Update Task now returns complete task data including description
365
- - Better user experience with full task details in response
366
-
367
- ### 1.3.5
368
- - **Documentation update**
369
- - Synced README with npm package (no code changes)
370
-
371
- ### 1.3.4
372
- - **Fixed "Empty Payload" error in Update Task**
373
- - Update Task now works correctly even when no fields are selected
374
- - Only sends PATCH request when there are actual fields to update
375
- - Improved error handling for update operations
376
-
377
- ### 1.3.3
378
- - **Restructured Get Many Tasks for better UX**
379
- - Added "Filter By" dropdown to choose between Plan or Bucket filtering
380
- - Plan ID and Bucket are now separate fields (not in collection)
381
- - Bucket dropdown now properly loads when Plan ID is entered
382
- - Simplified Get/Update/Delete Task to use "By ID" only (no dropdown)
383
- - Resource Locator UI for buckets with "From List" / "By ID" toggle
384
-
385
- ### 1.3.0 - 1.3.2
386
- - Added resource locator UI for Buckets and Tasks
387
- - Converted from loadOptions to listSearch methods
388
- - Various fixes for dropdown loading issues
389
-
390
- ### 1.2.4
391
- - **Fixed Bucket and Task dropdowns not showing!**
392
- - Changed field type from 'string' back to 'options' for proper dropdown display
393
- - Buckets now load correctly when Plan ID is entered
394
- - Tasks dropdown now works properly
395
-
396
- ### 1.2.3
397
- - Improved error handling for Buckets and Tasks loading
398
- - Better fallback values when data cannot be loaded
399
- - Added console logging for debugging dropdown issues
400
-
401
- ### 1.2.2
402
- - Removed Plan dropdown (Plans cannot be loaded via API)
403
- - Plan ID is now manual input only
404
- - Buckets and Tasks still have dynamic dropdowns
405
- - Simplified and more reliable plan selection
406
-
407
- ### 1.2.1
408
- - Fixed Plans not loading (improved API endpoint to fetch from groups)
409
- - Allow manual ID input in all dropdown fields
410
- - You can now choose from dropdown OR paste IDs manually
411
- - Added placeholders and better descriptions for all ID fields
412
- - Improved error handling for plans loading
413
-
414
- ### 1.2.0
415
- - **Major UX Improvement**: Added dynamic dropdowns for Plans, Buckets, and Tasks
416
- - No more manual ID lookup - select from dropdown menus
417
- - Plans load automatically from your Microsoft 365 account
418
- - Buckets load dynamically based on selected Plan
419
- - Tasks load from selected Plan or Bucket
420
- - Improved user experience with clearer field labels
421
-
422
- ### 1.1.1
423
- - Fixed startDateTime not being set (was returning null)
424
- - Fixed user assignment by adding User.Read.All permission requirement
425
- - Added error logging for failed user lookups
426
- - Improved README documentation with all required permissions
427
-
428
- ### 1.1.0
429
- - Added priority dropdown (Urgent, Important, Medium, Low) instead of number input
430
- - Added user assignment functionality (assign tasks by email)
431
- - Improved user experience with better field descriptions
432
-
433
- ### 1.0.1
434
- - Fixed DateTime format handling (automatic conversion to ISO 8601)
435
- - Improved error handling for invalid date formats
436
-
437
- ### 1.0.0
438
- - Initial release
439
- - Support for creating and retrieving Planner tasks
440
- - OAuth2 authentication
441
- - CRUD operations (Create, Read, Update, Delete)
442
-
443
- ## License
444
-
445
- [MIT](LICENSE.md)
446
-
447
- ## Author
448
-
449
- Developed and maintained by **Blickwerk Media UG**
450
-
451
- ## Credits
452
-
453
- This node was invented and developed by [**Blickwerk Media UG**](https://github.com/blickwerk/n8n-nodes-microsoft-planner). **United Workspace GmbH** contributed to its further development – we thank them for their contributions.
454
-
455
- **Web**: [blickwerk.media](https://blickwerk.media)
456
-
457
- ## Support
458
-
459
- For issues, questions, or contributions, please visit the [GitHub repository](https://github.com/blickwerk/n8n-nodes-microsoft-planner).
1
+ # n8n-nodes-microsoft-planner
2
+
3
+ This is an n8n community node that allows you to interact with Microsoft Planner in your n8n workflows.
4
+
5
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
6
+
7
+ [Microsoft Planner](https://www.microsoft.com/en-us/microsoft-365/business/task-management-software) is a task management tool that helps teams organize, assign, and collaborate on tasks.
8
+
9
+ ## Installation
10
+
11
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
12
+
13
+ ### Community Node
14
+
15
+ 1. Go to **Settings > Community Nodes** in your n8n instance
16
+ 2. Select **Install**
17
+ 3. Enter `@blickwerk/n8n-nodes-microsoft-planner` in **Enter npm package name**
18
+ 4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
19
+ 5. Select **Install**
20
+
21
+ After installing the node, you can use it like any other node in your workflows.
22
+
23
+ ### Manual Installation
24
+
25
+ To install manually:
26
+
27
+ ```bash
28
+ npm install @blickwerk/n8n-nodes-microsoft-planner
29
+ ```
30
+
31
+ ## Setup
32
+
33
+ Takes about 5 minutes. You need a Microsoft 365 work or school account. For step 2 you also need an admin (or someone allowed to grant admin consent) - if that's not you, send them steps 1-3.
34
+
35
+ ### 1. Register an app in Microsoft Entra ID
36
+
37
+ 1. In n8n, go to **Credentials → Add credential → Microsoft Planner OAuth2 API** and copy the **OAuth Redirect URL** shown at the top. Leave the dialog open.
38
+ 2. Open the [Microsoft Entra admin center → App registrations](https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) and click **New registration**.
39
+ 3. Fill in:
40
+ - **Name:** `n8n` (anything works)
41
+ - **Supported account types:** *Accounts in this organizational directory only*
42
+ - **Redirect URI:** platform **Web**, paste the OAuth Redirect URL from n8n
43
+ 4. Click **Register**. You're now on the app's **Overview** page.
44
+
45
+ ### 2. Add permissions
46
+
47
+ 1. Open **API permissions → Add a permission → Microsoft Graph → Delegated permissions**.
48
+ 2. Search and tick these four, then click **Add permissions**:
49
+
50
+ | Permission | Needed for |
51
+ |---|---|
52
+ | `User.Read` | Signing in |
53
+ | `User.ReadBasic.All` | Assigning tasks by email address |
54
+ | `Tasks.ReadWrite` | Plans, buckets and tasks |
55
+ | `Group.ReadWrite.All` | Group plans and comments |
56
+
57
+ 3. Click **Grant admin consent for <your organization>** and confirm. All four rows should show a green check mark.
58
+
59
+ ### 3. Create a client secret
60
+
61
+ 1. Open **Certificates & secrets → Client secrets → New client secret**, pick an expiry and click **Add**.
62
+ 2. Copy the **Value** right away (it is only shown once). Don't copy the *Secret ID*.
63
+
64
+ > Set a reminder for the expiry date. When the secret expires, create a new one and paste it into the credential.
65
+
66
+ ### 4. Connect n8n
67
+
68
+ Back in the n8n credential dialog, fill in three fields:
69
+
70
+ | n8n field | Where to find it in Entra ID |
71
+ |---|---|
72
+ | **Client ID** | Overview → *Application (client) ID* |
73
+ | **Client Secret** | The *Value* from step 3 |
74
+ | **Tenant ID** | Overview → *Directory (tenant) ID* |
75
+
76
+ Click **Connect my account**, sign in with your Microsoft account and accept. Done - the credential shows *Account connected*.
77
+
78
+ ### Troubleshooting
79
+
80
+ | Error | Fix |
81
+ |---|---|
82
+ | `AADSTS50194` … *not configured as a multi-tenant application* … */common endpoint* | Enter your **Tenant ID** instead of `common`. If the credential was created with an older version of this node and still shows this error, create a new credential. |
83
+ | `AADSTS50011` … *redirect URI* … *does not match* | The Redirect URI in Entra ID must be exactly the **OAuth Redirect URL** from n8n (watch `http` vs. `https`). Behind a reverse proxy, set n8n's `WEBHOOK_URL` to your public URL. |
84
+ | `AADSTS65001` / *Need admin approval* | Admin consent is missing - repeat step 2.3 or ask your admin. |
85
+ | `AADSTS7000215` … *invalid client secret* | You copied the *Secret ID* instead of the *Value*, or the secret expired. Create a new secret (step 3). |
86
+ | *Could not find user with email/ID* | `User.ReadBasic.All` is missing or was added after connecting: add it, grant consent and click **Reconnect** on the credential. |
87
+ | `403 Forbidden` on comments or group plans | `Group.ReadWrite.All` is missing or not consented. |
88
+
89
+ ### Upgrading from 1.5.x
90
+
91
+ Existing credentials keep working. Version 1.6 additionally uses `User.Read` and `User.ReadBasic.All`: add both in step 2, grant consent and click **Reconnect** on your credential once.
92
+
93
+ ## Features
94
+
95
+ - **Resource Locator UI**: Choose between "From List" (dropdown) or "By ID" (manual input) for Buckets
96
+ - **User Assignment**: Assign tasks to users by email address
97
+ - **Priority Management**: Easy-to-use priority dropdown (Urgent, Important, Medium, Low)
98
+ - **Comprehensive Task Support**: Full support for Task details including Checklist items and Attachments
99
+ - **Labels**: Apply and remove Planner labels (category1 - category25), the dropdown shows the label names of your plan
100
+ - **Full CRUD Support**: Manage Tasks, Plans, and Buckets
101
+ - **Comment Support**: Create and retrieve comments on tasks
102
+ - **AI Agent Tool**: The node can be used as a tool by n8n AI agents
103
+ - **Concurrency Handling**: ETag conflicts (HTTP 412) are retried automatically
104
+
105
+ ## Operations
106
+
107
+ ### Task
108
+
109
+ - **Create** - Create a new task (supports Checklist, Attachments, Labels, Preview Type, Order Hints)
110
+ - **Delete** - Delete a task
111
+ - **Get** - Get a task by ID (optionally include details)
112
+ - **Get Board Format** - Get the ordering of a task in the Bucket, Progress or Assigned To board view
113
+ - **Get Files** - Get all files attached to a task
114
+ - **Get Many** - Get multiple tasks from a plan, a bucket, the current user ("My Tasks") or another user (optionally with details, optionally excluding completed tasks)
115
+ - **Update** - Update an existing task (supports Checklist, Attachments, Labels, replacing/removing assignees, removing dates)
116
+ - **Update Board Format** - Change the ordering of a task in a board view
117
+
118
+ ### Plan
119
+
120
+ - **Create** - Create a new plan in a group
121
+ - **Delete** - Delete a plan
122
+ - **Get** - Get a plan by ID (optionally include details)
123
+ - **Get Many** - Get all plans (My Plans, Group Plans or the plans of a specific user)
124
+ - **Update** - Update a plan (supports Title, Label Names, and Sharing)
125
+
126
+ ### Bucket
127
+
128
+ - **Create** - Create a new bucket in a plan (optionally with order hint, optionally upsert by name)
129
+ - **Delete** - Delete a bucket
130
+ - **Get** - Get a bucket by ID
131
+ - **Get Many** - Get all buckets in a plan
132
+ - **Update** - Update a bucket name and order
133
+
134
+ ### Comment
135
+
136
+ - **Create** - Create a new comment on a task
137
+ - **Get Many** - Get all comments from a task
138
+
139
+ ## Usage
140
+
141
+ ### Creating a Task
142
+
143
+ To create a task:
144
+ 1. Enter the **Plan ID** (you can find this in Microsoft Planner URL or via Graph Explorer)
145
+ 2. Select a **Bucket** from the dropdown (loads automatically based on the Plan ID)
146
+ 3. Enter the **Title** of the task
147
+
148
+ Optional fields:
149
+ - **Description**: Detailed task description
150
+ - **Priority**: Select from dropdown
151
+ - Urgent (highest priority)
152
+ - Important
153
+ - Medium (default)
154
+ - Low
155
+ - **Assigned To**: Comma-separated list of user emails or IDs (e.g., `user1@domain.com, user2@domain.com`)
156
+ - **Labels**: Labels to apply (the list shows the label names defined in the plan)
157
+ - **Due Date Time**: When the task should be completed
158
+ - **Start Date Time**: When work on the task should begin
159
+ - **Percent Complete**: Task completion percentage (0-100)
160
+ - **Checklist**: Add multiple checklist items with titles and checked status
161
+ - **Attachments**: Add external references/attachments with URLs, aliases, and types (Word, Excel, etc.)
162
+ - **Description**: Detailed task description (stored in task details)
163
+
164
+ ### Getting Tasks
165
+
166
+ **Get a single task:**
167
+ - Enter the **Task ID** manually (no dropdown available for single task lookups)
168
+
169
+ **Get many tasks:**
170
+ - Choose filter type: **Plan**, **Bucket**, **My Tasks** or **User**
171
+ - Enter the **Plan ID** (Plan / Bucket) or the **User** (email or ID)
172
+ - If filtering by Bucket: Select bucket from dropdown or enter Bucket ID manually
173
+ - Optional: **Include Details** (description, checklist, attachments for every task), **Exclude Completed Tasks**, **Select Properties**
174
+
175
+ Microsoft Graph does not support `$top`/`$filter` for Planner, so all tasks of the selected scope are returned (pagination is handled automatically).
176
+
177
+ ### Updating a Task
178
+
179
+ To update a task:
180
+ 1. Enter the **Task ID** manually
181
+ 2. Update any of these fields:
182
+ - Title
183
+ - Description
184
+ - Priority (via dropdown)
185
+ - Assigned users (via email list)
186
+ - **Due Date Time**
187
+ - **Start Date Time**
188
+ - **Percent Complete**
189
+ - **Move to different bucket**
190
+ - **Checklist**: Add new items or update existing ones (Operation Mode: Append / Replace), or remove items by ID
191
+ - **Attachments**: Add new references (Operation Mode: Append / Replace), or remove references by URL
192
+ - **Description**: Update the task description (an empty value clears it)
193
+ - **Labels to Add / Labels to Remove**
194
+ - **Assignment Mode**: Append (default) or Replace the assignees; **Remove Assignees** unassigns users
195
+ - **Remove Due Date / Remove Start Date**
196
+ - **Order Hint**, **Assignee Priority**, **Preview Type**, **Conversation Thread ID**
197
+
198
+ ### Getting Files from a Task
199
+
200
+ To get all files attached to a task:
201
+ 1. Enter the **Task ID** manually
202
+ 2. The operation returns:
203
+ - **taskId**: The task ID
204
+ - **fileCount**: Number of attached files
205
+ - **files**: Array of file objects with:
206
+ - **url**: Decoded SharePoint URL (ready to use)
207
+ - **alias**: Display name of the file
208
+ - **type**: File type (e.g., PowerPoint, Word, Excel, PDF, Other)
209
+ - **previewPriority**: Priority for preview display
210
+ - **lastModifiedDateTime**: When the file reference was last modified
211
+ - **lastModifiedBy**: Who last modified the reference
212
+
213
+ ### Creating a Comment
214
+
215
+ To create a comment on a task:
216
+ 1. Select **Comment** as the resource
217
+ 2. Choose **Create** operation
218
+ 3. Enter the **Task ID** manually
219
+ 4. Enter the **Content** of the comment
220
+ 5. Optionally select **Content Type**:
221
+ - **Text** (default): Plain text that will be wrapped in HTML
222
+ - **HTML**: Custom HTML content
223
+
224
+ The comment will be created as a conversation thread in the Microsoft 365 Group associated with the plan. If the task doesn't have a conversation thread yet (or the linked thread was deleted), one will be created automatically. Plain text is HTML-escaped and line breaks are preserved.
225
+
226
+ ### Getting Comments from a Task
227
+
228
+ To get all comments from a task:
229
+ 1. Select **Comment** as the resource
230
+ 2. Choose **Get Many** operation
231
+ 3. Enter the **Task ID** manually
232
+ 4. The operation returns:
233
+ - **taskId**: The task ID
234
+ - **commentCount**: Number of comments
235
+ - **comments**: Array of comment objects with:
236
+ - **id**: Comment ID
237
+ - **content**: Comment body (HTML)
238
+ - **from**: Author information
239
+ - **createdDateTime**: When the comment was created
240
+ - **lastModifiedDateTime**: When the comment was last modified
241
+ 5. Enable **Split Into Items** to get one output item per comment instead
242
+
243
+ **Note**: Once a comment is posted in Planner, it cannot be deleted or edited via the Microsoft Graph API or the Planner UI (for Basic plans). This is a limitation of the Microsoft 365 Groups conversation system that Planner uses.
244
+
245
+ ### Working with Plans
246
+
247
+ The **Plan** resource allows you to manage Microsoft Planner plans:
248
+
249
+ - **Create**: Requires an **Owner Group** (selected from dropdown or entered as ID) and a **Title**.
250
+ - **Get Many**:
251
+ - **My Plans**: Lists plans the authenticated user is a member of.
252
+ - **Group Plans**: Requires a **Group ID** to list plans owned by that specific group.
253
+ - **User**: Lists the plans a specific user (email or ID) is a member of.
254
+ - **Get**: Retrieve full plan metadata. Enable **Include Details** to get category descriptions (labels) and other metadata.
255
+ - **Update**:
256
+ - Change the plan **Title**.
257
+ - **Category Descriptions**: Update the names of the 25 color-coded labels (Category 01-25). An empty value removes the name.
258
+ - **Shared With**: Update plan members using a JSON mapping of user IDs.
259
+ - **Delete**: Permanently removes the plan.
260
+
261
+ ### Working with Buckets
262
+
263
+ The **Bucket** resource manages the columns or categories within a plan:
264
+
265
+ - **Create**: Requires a **Plan ID** and a **Name**.
266
+ - **Upsert**: When enabled, the node will check if a bucket with the same name already exists in the plan and return that instead of creating a duplicate.
267
+ - **Get Many**: Lists all buckets within a specific **Plan ID**.
268
+ - **Update**: Change the bucket **Name** and its **Order Hint** (controlling the position in the UI).
269
+ - **Delete**: Removes the bucket from the plan.
270
+
271
+ ### How to Find Plan IDs
272
+
273
+ You can find your Plan ID in several ways:
274
+
275
+ 1. **From Planner URL**: Open Microsoft Planner in browser, the URL contains the Plan ID:
276
+ ```
277
+ https://tasks.office.com/.../ planId=YOUR_PLAN_ID_HERE /...
278
+ ```
279
+
280
+ 2. **Via Microsoft Graph Explorer**:
281
+ - Go to https://developer.microsoft.com/graph/graph-explorer
282
+ - Sign in
283
+ - Run: `GET /me/planner/plans`
284
+ - Copy the `id` field from the plan you want
285
+
286
+ ### Resource Locator (From List / By ID)
287
+
288
+ When creating tasks or filtering by bucket:
289
+ - **From List**: Select from dropdown (automatically loads based on Plan ID)
290
+ - **By ID**: Manually enter the ID if you already know it
291
+
292
+ For Get/Update/Delete operations, you need to manually enter the Task ID.
293
+
294
+ ## Compatibility
295
+
296
+ Built and linted with the official n8n community node tooling (`@n8n/node-cli` 0.55, `n8n-workflow` 2.16) for n8n 2.x. Recent n8n 1.x versions that support `NodeConnectionTypes` work as well.
297
+
298
+ ## Development
299
+
300
+ ```bash
301
+ # --ignore-scripts skips the native build of isolated-vm (a dependency of n8n-workflow
302
+ # that is not needed to build nodes and fails on Windows without build tools)
303
+ npm install --ignore-scripts
304
+
305
+ npm run dev # starts a local n8n with the node loaded (hot reload)
306
+ npm run lint # n8n community node lint rules (strict mode)
307
+ npm run build # compiles to dist/
308
+ ```
309
+
310
+ ### Releasing
311
+
312
+ Since May 1 2026, n8n requires community nodes to be published from GitHub Actions with npm provenance. The workflow in `.github/workflows/publish.yml` publishes the package whenever a version tag (e.g. `1.6.0`) is pushed.
313
+
314
+ 1. One-time: configure npm **Trusted Publishing** for this repository (workflow `publish.yml`) or add an `NPM_TOKEN` repository secret
315
+ 2. Run `npm run release` locally. It lints, builds, bumps the version, updates `CHANGELOG.md`, commits, tags and pushes
316
+
317
+ ## Resources
318
+
319
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
320
+ - [Microsoft Graph Planner API documentation](https://docs.microsoft.com/en-us/graph/api/resources/planner-overview)
321
+ - [Microsoft Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer)
322
+
323
+ ## Version History
324
+
325
+ ### 1.6.1
326
+ - **Simpler login**: the credential now only asks for Client ID, Client Secret and **Tenant ID**. The login URLs are built automatically, so single-tenant app registrations no longer fail with `AADSTS50194`.
327
+ - Setup guide rewritten as 4 short steps, with a troubleshooting table for the common Entra ID errors
328
+ - The package no longer ships the TypeScript build cache; CI uses `actions/checkout` and `actions/setup-node` v7
329
+
330
+ ### 1.6.0
331
+ - **Migrated to the current n8n community node tooling**
332
+ - `@n8n/node-cli` for build, lint, dev and release, ESLint 9 flat config, strict mode
333
+ - GitHub Actions workflows for CI and npm publishing with provenance (required by n8n since May 2026)
334
+ - Node is usable as an AI agent tool; correct item pairing (`pairedItem`) for all operations
335
+ - **New Features**
336
+ - Task labels (applied categories) on create and update; the label dropdown shows the plan's label names
337
+ - Get Many Tasks for **My Tasks** and **User**, optional **Include Details** and **Exclude Completed Tasks**
338
+ - Get Many Plans for a specific **User**
339
+ - Task **Get Board Format** / **Update Board Format** (Bucket, Progress, Assigned To views)
340
+ - Task update: Assignment Mode (Append/Replace), Remove Assignees, Remove Due/Start Date, remove checklist items by ID, remove attachments by URL
341
+ - Task: Order Hint, Assignee Priority, Preview Type and Conversation Thread ID fields
342
+ - Checklist items: Order Hint; attachments: Preview Priority
343
+ - Bucket create: Order Hint
344
+ - Comments: Split Into Items option, pagination for threads with many posts
345
+ - Search filter for the Bucket and Group dropdowns
346
+ - **Bug Fixes**
347
+ - Task update priority values were wrong ("Urgent" sent 0, "Important" sent 1, which Planner treats as urgent). Now 1/3/5/9, the same as on create
348
+ - Replying to an existing comment thread used an invalid endpoint (the conversation ID was taken from the thread). Now uses `/groups/{id}/threads/{id}/reply`
349
+ - Creating the first comment relied on `threads` in the create-conversation response, which Graph does not return
350
+ - Plain-text comments were not HTML-escaped (`<`, `&` broke the comment) and lost line breaks
351
+ - The OAuth scope was missing `User.Read` / `User.ReadBasic.All`, so assigning users by email could fail
352
+ - Plans are now created with `container` instead of the deprecated `owner` property
353
+ - Empty Attachments/Checklist sections no longer send an empty PATCH request
354
+ - The description can now be cleared on update
355
+ - Dates passed as Luxon DateTime/Date objects (e.g. `{{ $now }}`) were dropped
356
+ - Email addresses containing `'` broke the user lookup filter
357
+ - ETag conflicts (HTTP 412) are retried automatically instead of failing the workflow
358
+ - Errors now reference the failing item
359
+
360
+ ### 1.5.5
361
+ - **Bug Fix: $select Duplication**
362
+ - Fixed an issue where the `$select` query parameter was sent twice during pagination, causing "Query option '$select' was specified more than once" error.
363
+
364
+
365
+ ### 1.5.4
366
+ - **New Feature: $select Support**
367
+ - Added "Select Properties" field to "Get Many" operations for Tasks, Plans, Buckets, and Comments.
368
+ - **Improved Task Assignments**
369
+ - Fixed silent failures for task assignments.
370
+ - Added robust user lookup (ID, Email, UPN) and error reporting for missing users.
371
+ - Added support for Array inputs (expressions) in the "Assigned To" field.
372
+
373
+
374
+ ### 1.5.3
375
+ - **UI Improvements for Attachments and Checklists**
376
+ - Refactored to use a grouped UI pattern for better usability
377
+ - Replaced separate fields with a unified structure using `fixedCollection`
378
+ - **Updated Logic for Updates**
379
+ - Replaced "Replace All" toggle with a clearer **Operation Mode** dropdown (Append vs Replace)
380
+ - Renamed "Mode" to "Input Mode" for better clarity between Manual and JSON inputs
381
+ - Fixed logic for replacing items with matching IDs during updates
382
+
383
+
384
+ ### 1.5.2
385
+ - **Maintenance release**
386
+ - Removed runtime dependency on `n8n-core` to comply with n8n community node requirements
387
+ - No functional changes to node behavior
388
+
389
+ ### 1.5.1
390
+ - **Maintenance release**
391
+ - Replaced deprecated `requestOAuth2` helper with `httpRequestWithAuthentication` in Microsoft Planner API requests
392
+ - Removed `console` logging from the Microsoft Planner node and helper to satisfy n8n community package scan requirements
393
+
394
+ ### 1.5.0
395
+ - **Major feature release** (with contributions from United Workspace GmbH)
396
+ - **Added Comment Support**
397
+ - Create and retrieve comments on Planner tasks
398
+ - Automatic conversation thread management
399
+ - Support for both HTML and plain text comments
400
+ - **Enhanced Task Details**
401
+ - **Checklist Support**: Full support for adding and managing checklist items
402
+ - **Attachments (References)**: Support for adding external URLs and files to tasks
403
+ - **Replace All Options**: New toggles to replace existing checklists or attachments entirely
404
+ - **Plan Resource Support**
405
+ - CRUD operations for Plans
406
+ - Manage Category Labels (1-25)
407
+ - Manage Plan members (Shared With)
408
+ - **Bucket Resource Support**
409
+ - CRUD operations for Buckets
410
+ - Manage bucket names and positioning (Order Hint)
411
+ - **Robust Encoding**: Improved handling of special characters in attachment URLs
412
+ - **Internal Improvements**: Comprehensive build audit, improved error handling and data fetch reliability
413
+
414
+ ### 1.4.0
415
+ - **Updated branding**
416
+ - New Planner icon/logo
417
+ - Added About Blickwerk Media section with company info and social links
418
+
419
+ ### 1.3.9
420
+ - **Added Get Files operation**
421
+ - Retrieve all files attached to a task
422
+ - URLs are properly decoded for direct use
423
+ - Returns file metadata including alias, type, and last modified info
424
+
425
+ ### 1.3.8
426
+ - **Fixed priority values**
427
+ - Corrected priority mapping: Urgent (1), Important (3), Medium (5), Low (9)
428
+ - Priority values now match Microsoft Planner API specifications
429
+
430
+ ### 1.3.7
431
+ - **Fixed Update Task response handling**
432
+ - Fetch complete updated task data after PATCH operation
433
+ - Always returns full task object with all current values
434
+ - Fixes empty array and undefined description issues
435
+
436
+ ### 1.3.6
437
+ - **Improved Update Task response**
438
+ - Update Task now returns complete task data including description
439
+ - Better user experience with full task details in response
440
+
441
+ ### 1.3.5
442
+ - **Documentation update**
443
+ - Synced README with npm package (no code changes)
444
+
445
+ ### 1.3.4
446
+ - **Fixed "Empty Payload" error in Update Task**
447
+ - Update Task now works correctly even when no fields are selected
448
+ - Only sends PATCH request when there are actual fields to update
449
+ - Improved error handling for update operations
450
+
451
+ ### 1.3.3
452
+ - **Restructured Get Many Tasks for better UX**
453
+ - Added "Filter By" dropdown to choose between Plan or Bucket filtering
454
+ - Plan ID and Bucket are now separate fields (not in collection)
455
+ - Bucket dropdown now properly loads when Plan ID is entered
456
+ - Simplified Get/Update/Delete Task to use "By ID" only (no dropdown)
457
+ - Resource Locator UI for buckets with "From List" / "By ID" toggle
458
+
459
+ ### 1.3.0 - 1.3.2
460
+ - Added resource locator UI for Buckets and Tasks
461
+ - Converted from loadOptions to listSearch methods
462
+ - Various fixes for dropdown loading issues
463
+
464
+ ### 1.2.4
465
+ - **Fixed Bucket and Task dropdowns not showing!**
466
+ - Changed field type from 'string' back to 'options' for proper dropdown display
467
+ - Buckets now load correctly when Plan ID is entered
468
+ - Tasks dropdown now works properly
469
+
470
+ ### 1.2.3
471
+ - Improved error handling for Buckets and Tasks loading
472
+ - Better fallback values when data cannot be loaded
473
+ - Added console logging for debugging dropdown issues
474
+
475
+ ### 1.2.2
476
+ - Removed Plan dropdown (Plans cannot be loaded via API)
477
+ - Plan ID is now manual input only
478
+ - Buckets and Tasks still have dynamic dropdowns
479
+ - Simplified and more reliable plan selection
480
+
481
+ ### 1.2.1
482
+ - Fixed Plans not loading (improved API endpoint to fetch from groups)
483
+ - Allow manual ID input in all dropdown fields
484
+ - You can now choose from dropdown OR paste IDs manually
485
+ - Added placeholders and better descriptions for all ID fields
486
+ - Improved error handling for plans loading
487
+
488
+ ### 1.2.0
489
+ - **Major UX Improvement**: Added dynamic dropdowns for Plans, Buckets, and Tasks
490
+ - No more manual ID lookup - select from dropdown menus
491
+ - Plans load automatically from your Microsoft 365 account
492
+ - Buckets load dynamically based on selected Plan
493
+ - Tasks load from selected Plan or Bucket
494
+ - Improved user experience with clearer field labels
495
+
496
+ ### 1.1.1
497
+ - Fixed startDateTime not being set (was returning null)
498
+ - Fixed user assignment by adding User.Read.All permission requirement
499
+ - Added error logging for failed user lookups
500
+ - Improved README documentation with all required permissions
501
+
502
+ ### 1.1.0
503
+ - Added priority dropdown (Urgent, Important, Medium, Low) instead of number input
504
+ - Added user assignment functionality (assign tasks by email)
505
+ - Improved user experience with better field descriptions
506
+
507
+ ### 1.0.1
508
+ - Fixed DateTime format handling (automatic conversion to ISO 8601)
509
+ - Improved error handling for invalid date formats
510
+
511
+ ### 1.0.0
512
+ - Initial release
513
+ - Support for creating and retrieving Planner tasks
514
+ - OAuth2 authentication
515
+ - CRUD operations (Create, Read, Update, Delete)
516
+
517
+ ## License
518
+
519
+ [MIT](LICENSE.md)
520
+
521
+ ## Author
522
+
523
+ Developed and maintained by **Blickwerk Media UG**
524
+
525
+ ## Credits
526
+
527
+ This node was invented and developed by [**Blickwerk Media UG**](https://github.com/blickwerk/n8n-nodes-microsoft-planner). **United Workspace GmbH** contributed to its further development – we thank them for their contributions.
528
+
529
+ **Web**: [blickwerk.media](https://blickwerk.media)
530
+
531
+ ## Support
532
+
533
+ For issues, questions, or contributions, please visit the [GitHub repository](https://github.com/blickwerk/n8n-nodes-microsoft-planner).