From Freemium to Premium: Migrating from Trello to Microsoft Planner using Power Automate

von Petr Andreev | 15. Oktober 2024 | Software Engineering, Tools & Frameworks

Petr Andreev

Technical Expert

This article explores the Microsoft Power Automate platform, offering insights for individuals seeking automation solutions. It highlights the appealing aspects and challenges associated with this low code approach, illustrated through a concrete project example. The discussion aims to equip readers with a better understanding of how Power Automate can streamline processes while also addressing potential hurdles.

The project

In today’s collaborative work environment, effective tools for task management and team coordination are essential. Workstreams assemble to develop new ideas or manage issues. Teams require instruments that allow for streamlined, automated recording, and exchanging of responsibilities among members—especially when simply using sticky notes on the wall does not suffice. Numerous tools are available on the market, such as Atlassian Jira, Trello, Miro and Microsoft (MS) Planner. However, a comprehensive list is not the current focus.

Those who have relied on the freemium Atlassian Trello have recently faced a few significant issues:

  • Data breach: There has been a leakage of personally identifiable information from accounts.
  • Free Workspaces: These have limited the number of participants to 10.

One can imagine that these two concerns have compelled teams to look for alternative platforms that offer greater privacy while maintaining openness in their remote collaborations. For enterprises that can afford Microsoft Office 365 plans, a viable alternative would be a Microsoft Planner. It’s important to note that the included pricing plan offers only basic functions.

If a decision has been made in favor of Planner, how should teams proceed? Given the numerous Workspaces and thousands of Trello Cards and Comments, one option is to hire temporary staff or interns to manually copy and paste the content from Trello to Planner. However, there are challenges with Planner, such as:

  • Markdown Support: Planner does not support Markdown (MD) and only displays HTML-formatted text. Each description needs to be manually formatted in a compatible editor before being pasted into the Task Notes or Comment.
  • Comment Structure: Comments in Planner are structured as Conversations, Threads, and Posts, which are fully dependent on Microsoft Exchange infrastructure. Furthermore, Comments cannot be modified after their creation.
  • User Identity Sourcing: User identities are managed in the former Azure Active Directory (now Entra ID), while Trello uses its own Atlassian-based user management system, which may have multiple active entries for the same individual.
  • Unique Universe: Each platform has its own Users, Plans, and Tasks structure, disrupting existing interlinkages.

This highlights the clear need for an automated solution, unless the project involves only ten Cards on a single Trello Board.

Two Alternatives to Consider

When it comes to completing the migration, it is essential to examine possible options. This leads us to the next chapter: “Make It or Buy It?”

Currently, neither Atlassian nor Microsoft offers a solution to transfer valuable planning information in either direction. This trend is likely to continue, as companies tend to ignore competitors in a market where substantial revenues can be generated. It is also worth reviewing the pricing plans for Trello versus Microsoft Planner.

Third-party applications and frameworks, such as

claim to assist with migration for a fee (or even as Open Source), yet they often lack one or more of the features mentioned above, such as Task interlinking. Moreover, the documentation does not seem to align with the current Microsoft landscape—statements regarding one Plan per Office Group feel somewhat outdated. Checklists may also be truncated, leading to the loss of important information. Some tools require exporting a Trello Workspace to a text file before processing, making migration nearly impossible with a freemium version. Finally, to create Planner Plans, a third-party application will require access to employee identities and administrative consent in Azure Entra, which does not foster confidence.

Leveraging Microsoft Power Automate

Organizations often opt for a complete Microsoft Office 365 subscription, which includes a cloud-hosted package. The basic versions of Planner and Power Automate (PA) are available with this package. For advanced features, such as Gantt charts or Task history , like Trello’s Activity Log, users should consider subscribing to one of the Premium plans.

Key Considerations for Migration

Microsoft Power Automate offers a low-code platform for creating, executing, and managing automation processes. Excel users may find comfort in writing additional code with simple expressions. Migration artifacts are stored, versioned, shared, and can be published within the Power Automate Designer.

Power Automate Cloud Flow Designer Dashboard View

The Microsoft Identity and Access Management fully controls the lifecycle of PA artifacts. They can also be combined into Solutions for staging through different environments, if required.

Migration

Model transformation

First let’s have a look at the domain model transformation required for migration:

Visualisation of the Trello to Microsoft Planner model mapping
  • Trello Users must be mapped to MS Entra ones at the Assignment and Comments level. Multiple accounts for the same person must be detected and merged into a single account in the MS ecosystem
  • Workspaces will go into MS Office 365 Groups, e.g. the membership in the Group will enable a user to work on plans
  • Boards will become Plans
  • Lists are Buckets in the Planner
  • Cards will be transformed to Tasks
  • Cards Assignments have a counterpart for Tasks
  • Checklists remain Checklists, with limitations
  • Attachments of either source: Card’s or Comment’s, are tacked to Tasks in shape of references (Links and Files)
  • Comments in the Planner consist of a compound structure of ConversationsThreads and Posts, captured at the Group level and linked to corresponding Tasks. They do represent MS Outlook artifacts, actually
  • Labels are supported by Planner, and Custom Label texts will be converted to colored Categories despite differences between color palettes
  • Card Descriptions map to Task Notes in Planner
  • Actions can’t be migrated, since Planner doesn’t support any kind of history in the included version

Processing

Now move on to the migration data flow:

System Context of the Trello to Planner Migration showing the involved APIs and Systems

The driving part of the migration is a migration cloud flow, residing in PA platform. It performs following steps after kicking-off a process execution:

  1. Pull the Workspace from Trello (along with all child objects) via Trello REST API
  2. Resolve Board members and Commenters at Entra via Graph API by provided full names
  3. Create corresponding counterpart in the Planner for each Board, drilling down the children object tree
  4. Assign Tasks to entitled, resolved target Entra account(s), if there are some. This triggers an assignment email to affected user(s)
  5. Calculate progress and completion status of Tasks, derived from Lists they belong to and optional due dates
  6. Merge all Checklists into one and split long Checklist Items into multiple, if necessary, due to limitations in Planner
  7. Collect all custom label Categories while iterating through Cards and bind them to the target Plan
  8. Store File Attachments to SharePoint and connect them to new Tasks along with plain Hypertext References
  9. Rewrite all references from Task or Comment to Tasks, Workspaces or an external (not being part of migration) Plans
  10. Cleanse and convert to HTML all Task Notes and Comments by utilizing rate-limited GitHub Markdown REST API
  11. Create Conversations in the target Group for each Card chat, containing a Thread while replaying the historical Posts keeping their origins. Each Post results in an email to subscribed (if any) Group members
  12. Collect statistics on migrated objects in JSON format

The engine room

To take advantage of the Microsoft products, hosted in the cloud, the workflows have been developed as cloud flows stored in the Dataverse.

Core workflow definitions

The core migration cloud flow includes one main and three child process definitions.

Diagram showing the core migration flows for users, content and resource owners

Reused functionality is externalized to child flows, especially due to the lack of support for custom user expressions (or functions) in PA. This allows for testing and execution of the child flows in isolation.

The Resource Owner Password Credentials(ROPC) Grant flow is necessary because Microsoft Entra identity and network access model requires Delegated permission type for creation of Comment’s Conversation Threads. E.g. even though an unmanned Migration Application has been assigned broad permissions to modify Group, there is an additional requirement at Microsoft side to act on behalf of the certain person for such applications.

Due to limitations in PA regarding parent-child flows relationship all related flows must reside in the same solution.

Only owners (developers, for example) of the cloud flows should be given rights to edit the core solution.

Auxiliary workflow definitions

For migration execution an additional set of auxiliary cloud flows can be created in a separate solution to capture use case specific input parameters for the core migration flow, allowing for separation of responsibilities, repeatability, and versioning.

Example of Auxiliary workflow definitions (Alpha, Bravo, Charlie)

A use case specific cloud flow embeds the core migration flow as a child and passes over all required configuration parameters, like Trello Workspace ID (or name) to be migrated, as well as the target Office 365 Group ID (or name). Optional object filters, like Board IDs, excluded from migration, or an additional member mapping (where the automation fails to resolve an Entra user by provided name) can also be specified and stored with the auxiliary flow.

Again, due to limitations in PA regarding parent-child flows relationship all related flows, including the shared core migration flow definition, must reside in the same solution.

Dashboard overview of the Senacor use case specific Solution

Any operators (or executors) of such auxiliary cloud flows should be given rights to read (shared with) the main migration flow.

Note: All sensitive flow input parameters are sanitized by default, e.g. there is no clear-text credentials in PA execution logs.

Things to consider in advance

The PA flows are built around the standard HTTP connector to REST APIs to keep the migration process independent of executor identity.

Power Automate HTTP Connector settings
It offers great flexibility in terms of accessing any API over HTTP, not supported yet by pre-defined, specific PA connectors. The drawback of the plain HTTP connector is that one can’t rely on Entra authorization routines (marked as with Microsoft Entra ID (preauhorized)), executed behind the scenes and such making the auth flows invisible to operator. On the other hand by utilizing HTTP connector the cloud flow is not bound to Entra user account and can be configured according to gusto even for more complex use cases such as delegation of the user context. Making a flow user account-independent provides an additional advantage of templating of cloud flows and/or solutions.

Inexplicably, the HTTP connector belongs to the Premium category, therefore an addition subscription is required (for one-off migration a 90-days trial license would suffice though).

Consequently, the authentication against Microsoft in the core migration flows happens with registered Applications credentials. The application must be fitted with Graph API permissions:

Permission Description
Directory.Read.All
User.Read.All
to resolve Entra accounts
Tasks.ReadWrite.All to create Planner objects
Files.ReadWrite.All to upload file attachments to SharePoint
Group.ReadWrite.All also Delegated one, to create Conversations in Outlook
There is still need for migration user since Conversations can only be created as logged-in person, whose identity is propagated by ROPC grant’s OAuth 2.0 access token.

The Trello side requires obtaining Trello API key and token by using a dummy Power-App. The source Workspace administrator should add the API key owner as a member or he should be at least listed as a member of the Board being migrated.

Running the migration

Right after:

  • MS Entra tenant ID
  •  Personal Access Token for GitHub API

all these arguments need to be securely stored along with a particular auxiliary cloud flow definition for convenience. It is also recommended to test the setup with a temporary target group and smaller number of assignees when migration results are not getting published to a broader audience.

The migration cloud flow should be executed as migration user.

Estimated throughput is around 11-16 seconds per Task. The migration performance depends on cloud resources, number of Attachments and Comments per Task.

Administrators should be approached in any case since Task Comments depend on MS Exchange infrastructure.

Solution templates

The easiest way to let somebody else to execute a cloud flow is to share the flow definition within the MS Environment.

In case the collaboration is not desired due to, for instance, security reasons, a standalone cloud flow or even the entire solution can be exported from the PA workspace, given the necessary account permissions are in place (ask environment administrators for further assistance). The tricky part with solution is expanding the package provided and carefully re-generating flow UUIDs in flow definitions. After compressing the solution again, the package can be shared and reused in completely different environment.

The Good, the Bad and the Ugly

Power Automate provides “no-language-lock-in“ solution, also open for businesspeople, already used to Microsoft Office products. The flows can be designed with “click-and-connect” approach by selecting existing connectors to Microsoft universe or transformation actions. The expression language is easy to understand and is sufficient for basic logical and mapping functionality. The UI is mostly responsive and looks tidy. The versioning works indeed. Execution logs allow for deeper insights into process cycles. There are also lot of external connectors (like for Trello). The parallelization can be achieved with forks/joins via Action dependencies and works quite well.

On the other hand, the developers or maintainers would stumble upon few issues, like:

  • Licensing model, it is unclear, why the plain HTTP Connector belongs to Premium Plan
  • The new PA Designer lacks some features of the old one and vice versa
  • The old Designer allows, at least to a certain extent, for modification at source code level. Though an external browser plugin can provide a remedy here (editing of sensitive data is not recommended)
  • Due to missing scoped variables in PA all variables, used in the flow, must be declared at the top level. Therefore, all variables are initialized as global ones at the very beginning of the flow and are grouped by using a custom construct with no-op Compose actions
  • PA flows can be heavily hit by decreased throughput due to usage of loops (like Apply to each action). Loops usage should be avoided wherever possible by utilizing arrays and object keys manipulation
  • The standard, not extensible, settings of an action allow for retries on certain response codes while calling an external system. In some situations, like creation of the Group Conversation, an extra do/while loops with conditions are still required to cover, for instance, Not Found responses
  • Securing inputs of an action (or trigger) works as a whole: e.g. there is not option to distinguish between sensitive and non-sensitive ones- all of them are hidden, which makes editor’s live much harder while inspecting the execution results. The switch is generally possible via source code (JSON) modifications
  • Version history can be used to restore the cloud flow definition as a whole – merging is not supported
  • Copilot in Microsoft Power Automate is not useful for developers – maybe it will be improved in the future

There are some really important features missing in PA from the developer’s point of view:

  • No support for JSONPath or at least JSON Pointers. The entire PA is about working primarily with JSON – the workaround converting JSON payload to XML, selecting elements by XPath and converting back again to JSON is quite verbose though. Power Platform supports only XPath v1.0, as do underlying .Net libraries
  • No support for regular expressions. There are dedicated actions available to enable certain RegEx’s, but there is no way of using RegEx in expressions
  • Shared work on the very same flow definition resulted in lost modifications in our experience, one should be very careful with this feature
  • While working on Action expressions PA sometimes loses the updates. This can be very time consuming, because tests would be executed with outdated code. There are manual workarounds though to overcome the issue

Outlook

All in one, Power Automate is a reasonable option for short-lived, small process automation in the Microsoft universe, despite certain immaturity issues. It targets, besides developers, also businesspeople, able to integrate with other Microsoft products and Azure Applications.

Automation can also be added to Planner by tiny PA flows to, for instance, post a message on Task transition to a Slack channel or help to display planned excerpts on Confluence, etc.

Unfortunately, the missing features generally limit the use of Power Automate to the Microsoft ecosystem – there is definitely room for improvements from Microsoft. Additionally, for widespread use with many users, there are significant costs to the company due to the pricing policy. For long-running business processes that need to save their state and continue upon certain events, one should consider other solutions for workflow management.

References

💡 Tip: Some of links only work after successful authorization to an existing Microsoft Account