The Ultimate Productivity Powerhouse. Plan & manage tasks in Slack & Microsoft Teams ✓ Integrated KANBAN boards ✓ Workflow templates ✓ No admin overhead ✓ 100% free.
-->- Slack is the most versatile collaboration platform yet. Slack boasts a list of impressive features that keep teams productive and up-to-date with.
- قم بتنزيل هذا التطبيق من Microsoft Store لـ Windows 10. قم بمراجعة لقطات الشاشة، وقراءة أحدث تقييمات العملاء، ومقارنة التصنيفات لـ Slack.
This article walks you through the journey of moving to Microsoft Teams from Slack.
When planning your organization’s move to Teams from Slack, it's important to decide what you need to keep (if anything). We'll start off by describing what types of data can be migrated and then walk you through how to assess your needs, plan your move, and then make the move.
The diagram below shows the Slack architecture at a high level.
Plan your migration from Slack
What you can and can’t migrate
Your Slack service plan will determine what you can and can’t migrate. For example, some Slack service plans only let you export public channels history and files, other require a DocuSign request to include Private Channels and Direct Messages.
To determine your Slack Workspace service level, log into Slack and note your plan type on the About this Workspace page.
To learn more about Slack export options, go to the Slack website: https://get.slack.help/hc/articles/204897248-Guide-to-Slack-import-and-export-tools
The diagram below gives you a high-level look at the Slack migration landscape that we’ll cover in this article.
When you're done with this section, you should understand:
- The service level of your Slack Workspaces
- What can and can't be exported
- Common approaches to exporting
Assess your Slack workspaces
Before you can plan your organization’s migration plan, you need to pull together some information about your Slack workspaces. Understanding how your Slack workspaces are being used helps you determine the scope of your migration. For example, how many workspaces are being moved? Are they used by a specific department, many, or in use by an entire organization?
If you’re a member of the Slack Workspaces you want to migrate, you can analyze the usage yourself by going to .slack.com/stats. Review the Channels and Members tabs to look for usage patterns. Decide which workspaces you want to migrate (and which ones you want to leave behind).
Note
If you don’t have access to the stats page, you’re not an admin or owner.
Export Channels
In Slack, users join a channel which is part of a Slack Workspace, whereas in Teams users join a team which is a collection of channels. We recommend that you use Slack analytics to see how much activity happens in each channel to help you decide which channels to move. You’ll use the resulting list to figure out how to group your Slack channels into teams in Teams as well as who should be members of each team.
If you have a paid Slack service plan (anything other than Free), you can use Slack’s analytics (.slack.com/admin/stats#channels) to see how active a channel is, when it was last used, and how many people are members. This can help you decide whether to migrate the channel.By default, public channels content (messages and files) can be exported. Depending on your Slack service plan and whether you’ve requested Private Channels and Direct Messages from Slack, those can be exported.
To learn more about Slack export options, go to the Slack website: https://get.slack.help/hc/articles/204897248-Guide-to-Slack-import-and-export-tools
Important
Check your organization’s privacy and compliance requirements around channel data. Your organization may have compliance requirements around the handling, storage, and processing of this data, in addition to complying with the lifecycle of end-user identifiable content (EUII).
Export Direct Messages
Direct Messages are the same as chats in Teams, which are 1:1 or 1-to-many non-channel conversations. Export-ability depends on your Slack service plan and if you’ve requested Direct Messages to be included in your Slack Export. Teams doesn’t support importing Direct messages currently. Consult a Microsoft partner to learn about third-party solutions you can explore that bring Direct Messages content into Teams.
For exporting Direct Messages, check out tools, such as Export, in the Slack App Store.
Apps and custom integrations
Apps in Slack are like apps in Teams. Once you have a list of apps and their configurations in the Workspace, you can search in the Teams App store to see if they’re available for Teams*.
Go to .slack.com/apps/manage to get a list of Apps and Custom Integrations. This page also shows you the number of configurations where each app is in use.Custom Integrations vary in their “migrate-ability.” If it’s a Web Hook, you can usually send it to a Microsoft 365 or Office 365 Connector to shift the workflow into Teams. Assess bots and other apps on a case-by-case basis to plan for moving them to Teams.
* If your administrator has restricted apps usage, you may not be looking at the full list of available apps.
Users
The identity schemes you used in Slack might not map directly to Microsoft 365 or Office 365. For example, the email addresses of your Slack users may not map to Microsoft 365 or Office 365 work or school accounts. You should create a user-ID map before you start planning your Teams rollout.
If you’re on a paid Slack service plan, you can go to .slack.com/admin/stats#members to get member details such as email address and account type for each user (for example, single vs. multi-channel guest).
Here’s a script you can use to compare email addresses from a Slack export against Azure AD to help solve for name ambiguity. It’ll also report if the user is enabled for Teams. If you need help with PowerShell, read Get started with Azure PowerShell.
When you’re done with this section, you should have:
- A list of Channels per Workspace with usage statistics.
- A list of Slack Apps with configurations per channel.
- Determined what type of Slack message history you want to export (if any).
- A list of users whose Slack accounts map to Microsoft work or school accounts and which Teams license they have.
Plan your Teams deployment
You’ve exported what you need from Slack (and left behind anything you don’t need). Now it’s time to plan how you’ll roll out Teams and import your Slack data. This is a great opportunity to assess what's worked well for the team based on usage and include those elements in your Teams deployment plan. At the end of this section, you’ll have a blueprint for your Teams users, channels, and apps.
The diagram below gives you a high-level outline of the things you’ll address in your Teams deployment.
Team and channel structure
A Slack Workspace may represent a single team, multiple teams or an entire organization. It’s important to understand the scope of the Workspaces as you determine the structure. The closest relationship to a Teams team in Slack is the Workspace, which contains a collection of channels. The diagram below demonstrates 3 different Slack-to-Teams mappings, and guidance for picking the right one for each Workspace.
Slack-to-Teams mapping | |
---|---|
1 Slack Workspace ➡️ 1 team | For smaller Slack workspaces that need fewer than 200 channels Include a buffer for growth and private channel planning |
1 Slack Workspace ➡️ multiple teams | Use your Slack Workspace analytics data to create logical channel groupings, which become the basis of your teams |
2+ Slack Workspaces ➡️ multiple teams | Use your Slack Workspace analytics data to create logical team and channel groupings, which become the basis of your teams |
Third-party solutions have usage statistics to help you assess how active the channel is and how many posts there are. Typically, channels that are frequently used would be candidates to include in your team planning.
Tip
Slack Vs Microsoft Teams Comparison
Retain only what is required in your approach to determine which channels to recreate in Teams. To learn more, read Overview of teams and channels.
Team Planning
Using the Channel inventory you compiled in the Planning section above, work with your Slack owners and admins to figure out which channels should become teams and which ones should become channels in a team. Use either Excel or PowerBI to help with this analysis - both can provide additional insights to help drive these discussions on which channels to retain.
Tip
Teams currently has a 200-channel limit per team. If your list of channels is getting close to that limit, you should figure out a way to split them into two separate teams.
Channel History
There are both free solutions on GitHub and paid solutions you can use, depending on your organization’s requirements to retain Channel History of Public and Private channels. Additionally, this could be scripted into Teams.
Once you’ve set up your new team and channel structure in Teams, you can copy the exported files into the appropriate document libraries in your Teams channels.
To automate the importing of your content, there are several approaches you can consider. There are free solutions on GitHub (ChannelSurf or Slack Export Viewer) and partner solutions. Choose a solution based on your organization’s needs.
Channel Files
Most solutions will export files. However, they’re typically provided as links in the Channel History that require an API key to programmatically retrieve.
For files stored in Slack, once you’ve set up your teams and channels in Teams, you can programmatically copy them from Slack into the target Teams channel.
The following script retrieves files from Slack. It searches the specified Slack export on your computer, creates a folder in each target channel, and downloads all of the files to that location. Third-party solutions exist that can extract data. If you need help with PowerShell, read Get started with Azure PowerShell.
Apps and Custom Integrations
Connect Slack To Teams
Review your list of Slack apps and custom integrations (with configurations) and decide which ones you want to move to Teams. Check the Teams Marketplace to see if an app is available. If not, there are likely alternatives.
To figure out which apps to add to Teams, it’s important to understand how the app is being used. By asking the question 'what functionality is the app providing to this channel?', you'll learn about the outcome the app is delivering.
In many cases, apps primarily receive event-driven data from an external service (for example, monitoring system) and push a message into Slack. You can achieve the same outcome by using a Microsoft 365 Connector that can push messages into Teams based on events.
Below are examples of Slack solutions where a Microsoft 365 Connector was used in Teams for integration.
- Ansible
- Alerts can be sent to Teams via Ansible webhook
- New Relic
- Check out this user solution for sending New Relic alerts to Teams
- Nagios
- Alerts can be integrated today via Connectors. https://github.com/isaac-galvan/nagios-teams-notify
- ZenDesk
- App exists in Teams Store
- Jenkins
- Alerts can be sent to Teams using Jenkins’s Office 365 Connector
User readiness and adoption plan
The cornerstone of any successful software deployment hinges on how prepared users are for the change. Users in your organization using Slack will easily understand Teams concepts, but training is still needed to help them make a smooth transition. For a comprehensive set of Teams adoption resources, go to the Teams adoption hub.
For example, both products feature channels, but they’re used differently in each product. For example, often a Channel in Slack is used like a chat in Teams for short-term, transactional conversations. Other notable differences are around threaded/non-threaded conversations and tuning notification settings.
Check out our rich library of End-user Teams video training.
Move to Teams
Now that your transition plan is defined, you can begin creating your teams and channels in Teams.
Once you’ve created your teams & channels, begin copying files from Slack channels into Teams and configuring your apps. If you’re using a solution to retain history, that can be configured now as well. Then you’re ready to start licensing users (if they aren’t licensed already) and adding them to the appropriate teams. To reduce the need for additional exports and file copies, consider removing Slack access at an agreed-upon date that coincides with each user’s addition to the team. This avoids needing to re-export and import delta changes on files and history.
Follow the steps in the diagram below to roll out Teams in your organization. For more information, check out How to roll out Teams.
Slack To Teams Migration
-->Slack is a team communication tool, that brings together all of your team communications in one place, instantly searchable and available wherever you go.
This connector is available in the following products and regions:
Service | Class | Regions |
---|---|---|
Logic Apps | Standard | All Logic Apps regions except the following: - Azure China regions |
Power Automate | Standard | All Power Automate regions except the following: - US Government (GCC High) - China Cloud operated by 21Vianet |
Power Apps | Standard | All Power Apps regions except the following: - US Government (GCC High) - China Cloud operated by 21Vianet |
Contact | |
---|---|
Name | Microsoft |
URL | Microsoft LogicApps Support Microsoft Power Automate Support Microsoft Power Apps Support |
Connector Metadata | |
---|---|
Publisher | Microsoft |
Website | https://slack.com/ |
Privacy policy | https://slack.com/privacy-policy |
Known Issues and Limitations
As per the Slack API documentation, some Slack API methods that the connector uses will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. So please use latest versions of below actions.
Actions:
Create a group
is deprecated, please use latest version ofCreate a channel
to create private channels.The maximum number of characters in a message is limited to 4000. For more details, please refer to Slack's official documentation.
Connector in-depth
For more information about the connector, see the in-dept section.
Throttling Limits
Name | Calls | Renewal Period |
---|---|---|
API calls per connection | 100 | 60 seconds |
Frequency of trigger polls | 1 | 120 seconds |
Actions
Create a channel | Create a channel in slack. |
Create a channel [DEPRECATED] | This action has been deprecated. Please use Create a channel instead.
|
Create a group [DEPRECATED] | Creates a group in slack. |
Join a channel [DEPRECATED] | This action has been deprecated. Please use Join a public channel instead.
|
Join a public channel | Join a public channel in slack. |
List channels [DEPRECATED] | This action has been deprecated. Please use List public channels (Pagination support) instead.
|
List public channels | List the public channels in slack. |
List public channels (Pagination support) (Preview) | List the public channels in slack. |
Post message (V2) | This operation is used to post a message to the specified channel. |
Post message [DEPRECATED] | This action has been deprecated. Please use Post message (V2) instead.
|
Set do not disturb | Set the do not disturb status for the user. |
Create a channel
Create a channel in slack.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
name | string | The name of the new channel. | ||
Is Private channel? | is_private | boolean | Channel is private or not |
Returns
Create a channel [DEPRECATED]
This action has been deprecated. Please use Create a channel instead.
Create a channel in slack.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
name | string | The name of the new channel. |
Returns
- Body
- CreateChannel_Response
Create a group [DEPRECATED]
Creates a group in slack.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
name | string | The name of the group. |
Returns
Name | Path | Type | Description |
---|---|---|---|
Id | group.id | string | The id of the group. |
group.name | string | The name of the group. |
Join a channel [DEPRECATED]
This action has been deprecated. Please use Join a public channel instead.
Join a channel in slack.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
name | string | The name of the channel. |
Returns
- Body
- JoinChannel_Response
Join a public channel
Join a public channel in slack.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
channel | string | The name of the channel. |
Returns
- Body
- JoinChannel_ResponseV2
List channels [DEPRECATED]
This action has been deprecated. Please use List public channels (Pagination support) instead.
List the channels in slack.
Returns
List public channels
List the public channels in slack.
Returns
List public channels (Pagination support) (Preview)
List the public channels in slack.
Returns
Post message (V2)
This operation is used to post a message to the specified channel.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
channel | True | string | Channel, private group, or IM channel to send message to. Can be a name(ex: #general) or an encoded ID. | |
Message Text | text | True | string | Body of the message to send. Slack API will truncate messages containing more than 40,000 characters. For formatting options, see https://api.slack.com/docs/formatting |
username | string | Name of the bot. | ||
Post As User | as_user | boolean | Pass true to post the message as the authenticated user, instead of as a bot. | |
parse | string | Change how messages are treated. For details, see https://api.slack.com/docs/formatting | ||
Slack markup parsing | mrkdwn | boolean | Slack markup parsing setting. Enabled by default. | |
link_names | integer | Find and link channel names and usernames. | ||
Unfurl Links | unfurl_links | boolean | Pass true to enable unfurling of primarily text-based content. | |
unfurl_media | boolean | Pass false to disable unfurling of media content. | ||
Icon Url | icon_url | uri | URL to an image to use as an icon for this message. | |
icon_emoji | string | Emoji to use as an icon for this message. |
Returns
Details of the message posted to a Slack channel.
- Body
- PostMessageResponse
Post message [DEPRECATED]
This action has been deprecated. Please use Post message (V2) instead.
This operation is used to post a message to the specified channel.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
channel | True | string | Channel, private group, or IM channel to send message to. Can be a name(ex: #general) or an encoded ID. | |
Message Text | text | True | string | Body of the message to send (less than 4000 characters). For formatting options, see https://api.slack.com/docs/formatting. |
username | string | Name of the bot. | ||
Post As User | as_user | boolean | Pass true to post the message as the authenticated user, instead of as a bot. | |
parse | string | Change how messages are treated. For details, see https://api.slack.com/docs/formatting. | ||
Link Names | link_names | integer | Find and link channel names and usernames. | |
unfurl_links | boolean | Pass true to enable unfurling of primarily text-based content. | ||
Unfurl Media | unfurl_media | boolean | Pass false to disable unfurling of media content. | |
icon_url | uri | URL to an image to use as an icon for this message. | ||
Icon Emoji | icon_emoji | string | Emoji to use as an icon for this message. |
Returns
Name | Path | Type | Description |
---|---|---|---|
ok | boolean | Indicates if the operation was successful. | |
Channel | channel | string | The channel which the message was posted to. |
ts | string | yyyy-MM-ddTHH:mm:ss.fffZ | |
Message Text | message.text | string | Body of the message. |
message.id | string | Unique identifier of the message. | |
Creator Id | message.user | string | Unique identifier of the user who posted the message. |
message.created | integer | Unix timestamp for when the message is created. | |
Is Deleted | message.is_user-deleted | boolean | Whether or not the message has been deleted. |
error | string | Details of the error messages, if any. |
Set do not disturb
Set the do not disturb status for the user.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
num_minutes | string | The number of minutes to set do not disturb. |
Returns
Name | Path | Type | Description |
---|---|---|---|
Snooze Enabled | snooze_enabled | boolean | Whether snooze is enabled. |
Triggers
When a file is created | When a file is created |
When a file is created
When a file is created
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
channel | True | string | The name of the channel. |
Returns
Name | Path | Type | Description |
---|---|---|---|
Id | id | string | Id of the file |
created | integer | When the file was created. | |
Name | name | string | The name of the file. |
title | string | The title of the file. |
Definitions
Channel
The Channel
Name | Path | Type | Description |
---|---|---|---|
id | string | The id of the channel. | |
Name | name | string | The name of channel. |
ListChannels_Response
Name | Path | Type | Description |
---|---|---|---|
channels | array of Channel |
ListChannels_ResponseV3
Name | Path | Type | Description |
---|---|---|---|
value | array of Channel |
CreateChannel_Response
Name | Path | Type | Description |
---|---|---|---|
channel | Channel | The Channel |
JoinChannel_Response
Name | Path | Type | Description |
---|---|---|---|
already_in_channel | boolean | Whether the user is already in the channel or not. | |
Channel | channel | Channel | The Channel |
JoinChannel_ResponseV2
Name | Path | Type | Description |
---|---|---|---|
channel | Channel | The Channel | |
Warning | warning | string | Whether the user is already in the channel or not. |
PostMessageResponse
Details of the message posted to a Slack channel.
Name | Path | Type | Description |
---|---|---|---|
ok | boolean | Indicates if the operation was successful. | |
Channel | channel | string | The channel which the message was posted to. |
ts | string | Unix timestamp for when the message was created. | |
Message Type | message.type | string | Type of the message. |
message.text | string | Body of the message. | |
Created Time | message.ts | string | Unix timestamp for when the message was created. |
error | string | Details of the error messages, if any. |