Lightweight Plans Coming in Fluid Component for Teams Meetings

Rosters are Lightweight Plans

Six months after their original attempt, Microsoft seems ready to relaunch rosters or lightweight plans (MC279089, August 18) by enabling the feature “on Graph for all tenants starting in mid-September and expect to complete by mid-October.” The mention of the Graph is a little confusing because of the use of PowerShell to disable or enable rosters (see below). It means that Microsoft will enable lightweight plans by lighting up the necessary Graph API in Office 365 tenants.

Lightweight plans are Planner plans without Microsoft 365 Groups. Originally, Planner had a 1:1 relationship with Groups and each plan had an associated group. Teams then broke the 1:1 connection by supporting multiple plans per team (group). Lightweight plans have their own list of members (the roster). Members have Azure AD accounts in the tenant. The plans themselves do not exist as Azure AD objects. Instead, Planner manages lightweight plans like other (group-enabled) plans using the same Planner browser interface (references to resources available to group-enabled plans are suppressed). Planner deletes lightweight plans automatically upon the removal of the last member.

Using Fluid-Based Lightweight Plans in Teams Meetings

Microsoft says that the only way to create lightweight plans is through the Graph API for Planner, which Microsoft is extending to deal with roster containers. This brings me neatly to how Microsoft will use lightweight plans. In MC279089, a reference is made to New hybrid work innovations (June 2021), where Microsoft CVP Jared Spataro discussed new features coming to Microsoft 365, including the Fluid Framework.

We know that Teams will soon support fluid components in chat. The natural connection between lightweight plans and Teams is in meetings, specifically to allowing meeting organizers to add a fluid component to track tasks assigned during meetings (the meeting participants form the plan roster).

Fluid components already include a task list, but the tasks captured in this component exist only in the fluid file created in the originator’s OneDrive for Business account. The advantage of linking a fluid component to a Planner lightweight plan is that the tasks captured in the lightweight plan can synchronize with the rest of the Microsoft 365 task ecosystem and be available in apps like To Do or, perhaps more importantly, the Teams Tasks app. Synchronization should mean that the tasks assigned during meetings show up under the Assigned to Me list within My Tasks in the Tasks app. We’ll have to see how the implementation works in Teams. I imagine that the same component will show up in Outlook meetings later (OWA first and later Outlook desktop using the Edge WebView2 component).

Planner’s Ongoing Poor PowerShell Support

In my March post, I commented about the poor support of PowerShell by Planner. Things haven’t improved very much since. Why Planner goes through the current rigmarole instead of supporting the distribution of the PowerShell module via the PowerShell Gallery is beyond me.

If you want to disable rosters (or turn them back on later), you must:

  • Download a Zip file containing a PowerShell module file (psm1) from Microsoft.
  • Unzip the file to somewhere suitable and block the script module and DLL files.
  • Adjust the execution policy for the workstation to allow execution of the downloaded files.
  • Import the module file (remember to include the full location of the psm1) into a PowerShell session.
  • Check the Planner configuration with the Get-PlannerConfiguration cmdlet.
  • Adjust the roster setting with the Set-PlannerConfiguration cmdlet.

For instance, here’s what I did to load the files, examine the configuration, and update the configuration to disable the creation of rosters.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y

Import-Module "c:\temp\plannertenantadmin\plannertenantadmin.psm1"

Get-PlannerConfiguration
AllowRosterCreation AllowTenantMoveWithDataLoss AllowPlannerMobilePushNotifications AllowCalendarSharing
------------------- --------------------------- ----------------------------------- --------------------
               True                       False                                True                 True

Set-PlannerConfiguration -AllowRosterCreation $False

Exporting Planner User Data

The Planner script module contains the Export-PlannerUserContent cmdlet, which administrators can use to export Planner data for a selected user. For example, to export my Planner data, I ran:

Export-PlannerUserContent -UserAadIdOrPrincipalName Tony.Redmond@office365itpros.com -ExportDirectory C:\temp\plannertenantadmin

The cmdlet took 35 seconds to export 13.7 MB of Planner data from 51 plans. The data for each plan is in a separate JSON-format file (Figure 1) containing details of the tasks and other information used by Planner.

Figure 1: Planner data exported for a user

MVP Alex Holmeset has written about using the Planner Graph API to extract data for users and import the data into accounts in a new tenant. Maybe the existence of this capability will make moving Planner data around just a tad easier, even if there’s no equivalent import cmdlet (yet) to process the JSON files.

Moving Forward

Lightweight plans open new possibilities for any app which needs to capture and manage tasks for a small set of users. I’ve been a happy user of Planner for years and use the app to manage the development and progress of the Office 365 for IT Pros eBook. The Tasks app in Teams delivers a nice overhead of personal (To Do/Outlook) and organizational (Planner) tasks. Adding tasks assigned in meetings managed through lightweight plans should be a useful extension. We’ll see when the functionality turns up in apps.

9 Replies to “Lightweight Plans Coming in Fluid Component for Teams Meetings”

  1. Hey Tony, thx for this nice Article. Right now we are looking into this roster thing. Did you already mange to use it ?

    What I already achieve with the PowerShell graph sdk , create a new roster plan via

    New-MgPlannerRoster

    add a user to to it:
    New-MgPlannerRosterMember -PlannerRosterId yY9cSi1uqUmbOCH5seljn5YXXXXX -UserId 8fb37c8a-4e35-4dde-bd95-XXXXXXXXXXXX

    But now I am stuck how to use this thing with the planner app

    Thx for your help

    Christoph

      1. Okay Thx for the reply.
        Looks like the entire world is waiting, at least I could not find a useful source how to use the roster / lightweight plans.

        Have a nice day

        Christoph

    1. Here too, able to create ID but what then? Does it show up in Planner? Besides ID no other info can be added, like a title, description and so on. How to reveal to the user then?

      1. I think we need to wait and see how Microsoft uses these lightweight plans to understand how other applications might exploit their capabilities. Planner just seems to take forever to get anything done…

  2. Do you see a way to list all roster containers created/existing in a tenant?

  3. With PowerShell
    you can create Roster Container, Add users to the Container and create a Plan for the container. Find details in the PS code below

    Connect-Graph
    Select-MgProfile -Name “beta”

    $params = @{
    “@odata.type” = “#microsoft.graph.plannerRoster”
    }

    New-MgPlannerRoster -BodyParameter $params

    //returns
    //Id
    //–
    //example-y62a1r9Wjk6lv1xxxxxxxxxxxxxxxxx

    //UserId of the user who shall have access to the planner
    New-MgPlannerRosterMember -PlannerRosterId “example-y62a1r9Wjk6lv1xxxxxxxxxxxxxxxxx” -UserId “e00ecbac-xxxx-xxxx-xxxx-xxxxxxxxxxx”

    $param = @{
    Container = @{
    ContainerId = “example-y62a1r9Wjk6lv1xxxxxxxxxxxxxxxxx”
    Type = “roster”
    }
    Title = “Name of the Roster Planner”
    }

    New-MgPlannerPlan -BodyParameter $param

    //returns the ID of the new Planner
    //example-e00ecbac-xxxx-xxxx-xxxx-xxxxxxxxxxx

    Plan shows then in the Planner App for the assigned user. No Group-Channel shown below the Plan.
    Additional users can be invited and the Plan can be managed from the standard Planner App UI.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.