Importing from Slack, Hipchat, Flowdock, Basecamp, etc.
We are using Slack for a long time and now we are thinking to transition to MS Teams. In Slack it is possible to export all channel content's in JSON with links to files uploaded to slack.
It could be very useful to have the ability to import the slack history into MS teams.
Thank you for your continued feedback. We are currently working on this, and recently announced this feature for developers in Beta. For more information, please visit https://developer.microsoft.com/microsoft-teams/blogs/importing-3rd-party-platform-messages-to-microsoft-teams-is-now-available-in-beta/.
Howard Weinstein commented
Any progress on this? We have a client who wants to migrate from Symphony to Teams but without the import feature I am not sure if they will make the move
Angelo Lakra commented
After six months of checking this thread, I was hoping someone had a solution, but this doesn't seem to have happened yet.
We were using Slack and a company came along and bought us. They use Skype and Teams for all group chat communication.
We though that we had to switch over to Teams, but we were told several months later that we would remain on Slack.
Today, I work across two different services, Slack and Teams, to communicate to different parts of the company. I don't know if this will continue as our teams get more integrated, but we'll see.
Regardless, in those few short months, I was racking my brain on how to import our historic chat data into the threaded format that Teams uses. This seems possible by reformatting each channel's history for it to make sense in a threaded context.
The first obstacle I ran into is that I don't have the time to do that. As a realistic example, if four people are having two different conversations in the same channel in Slack, how should that look in Teams? I can create two threads with the correct context so that each thread has the correct participants, right? What if one of the users decides to answer both users across the conversations on the same message? I can solve this by creating a single thread, but I cannot come to that conclusion without grasping the context of the conversation. Manual refinement doesn't scale well for large archives of chat.
If you make every message you want to import into it's own thread, then it could work, but this doesn't look right in Teams because you end up with a ton of single message threads that are linked or not linked by conversation. You won't know unless you read each one because they aren't grouped.
The second obstacle I came across were the missing import features of the current API. I cannot import messages with backdated time stamps. I cannot easily assign authorship of past messages to current users without some type of credentials from that user. And the most problematic, I cannot create more messages within a thread other than the first one from the API.
According to the API documentation (as of Jan 2, 2018), none of this is straight-foward or even possible with the Microsoft Graph Beta API for Teams. See https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/chatmessage and https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/channel_post_chatthreads
So, even if you are a good programmer and you have all the historical chat data structured in a threaded way, you're blocked until they add support for these needed features. If I'm wrong about this, please do post about it and correct me.
Having assessed the import situation, it might be useful to think through a few questions for creating alternative solutions:
1) Why do you want to preserve your old chat data? This might be seem obvious, but asking it will actually pinpoint the value you want to retain for your organization.
2) Do you have a business requirement that requires that this data be readily available? Is not having this chat data available causing your business to suffer in some way? This can help your prioritize how badly you need this functionality.
3) When you do finally get your data imported, what minimal viable functionality do you need to get the value from your historic chat data? Is search and retrieve enough? Do you need some sort of heuristic process to get deeper knowledge out of your data?
4) Are there other ways that you can utilize your historic chat data out-of-band from your previous chat provider and Teams? Can your organization provide an in-house solution for querying your historic chat data? Or would you be willing to work with a third-party who can build a solution for you?
I think if you can at least answer these questions, it will at least be clear if pursuing an import strategy is worth it or not. For me, it turns out that I didn't need to, but that could change as the company I work for integrates its tooling more tightly.
Now, not all is lost, there are some other handy features of Teams that can be utilized to get your historical chat data into usable places. Tabs seems to be the most viable because you can build a custom web service somewhere on the internet and serve your content contextually to a tab tied to each channel.
This content could be as simple as a flat plain text log of all the historical data for the slack-equivalent channel or you can add search features. It's up to you. I really believe this is the correct way to solve the migration problem because you aren't beholden to the constraints of Teams.
I would love to hear further thoughts on this.
We are using Flowdock and have been asked to migrate to Teams. When do you expect to have your migration tool available for general use? For beta? Thanks
Private channels and content migration is absolutely important for a smooth transition from Slack to Teams. However, I was told it is slack who doesn't open up APIs for import data out. We are planning to minimise our Slack presence to only engineering and wait until there is a plan for them
Hi Suphatra, in response to you request for ideas of work-arounds - we don't necessarily need to have a tool that will create Teams and channels automatically based off existing Slack channels. If we could do this on a channel by channel basis, that would be fine in the interim - e.g. I create a Team, then create a new channel in the Team, and from there select a Slack channel to import from.
Joseph Doyle commented
Until we can migrate years of history from HipChat Server to Teams, we can't use teams.
Without a migration tool to go from Slack to Teams my company will continue using Slack.
Hi, same here, we're migrating everything from several system to microsoft suite (Google drive to One Drive, Slack to teams, etc..) and a the lack of a tool to migrate from slack to teams will most probably make us keep working with slack.
GIRAUD Alexandre commented
while don't have a migration tool from Slack, it's clearly not possible to plan using MS Teams at this time. It's really a have-to feature.
I've created a command line tool that lets you quickly re-create your Slack channel structure, and bulk create new channels in Microsoft Teams. The code is written in .NET Core and will run on Windows, macOS, and Linux. Functionality is limited by the available APIs (described above) and, hopefully to a lesser extent, my skillset. For the willing and able, my code is up on GitHub for you to try:
Not a nice solution, but as we needed to complete the migration and the only showstopper was channel history. (Compliance dump was backed up for all other purposes) what we've done is a one time export of the slack history of each channel into HTML format. Then rename it to .doc, which MS accepts as valid transition, and post it as a file on the new Teams channel Files folder. So at least there's a way to view and search for history for anyone who needs it.
Scott Hammer commented
Since the only solution up until this point seemed to create a document of your chats (from a previous platform) and attach them to a room as a word document, pdf, etc. I created 2 methods that will enable you to get your chats directly into MS teams and have them searchable. It's certainly a little hacky and will require development experience.
You know, you could require that the Team be already created before importing (if it's easier for you). I think it's a better UX if I don't need to check a "Slack archive" Team for historical information. If you don't remember where the latest information is, you'd need to search twice.
Assuming the Team is already created.
Here are a few potential workflows:
- Start importing Slack channel content
- Get Slack usernames/ids and ask the user to match Slack info to Teams info.
- Ask how to deal with Slack users that are not in the Teams channel: add to the channel (provide the interface to do so at some point), keep name without linking (for example: past employees, or people that are not in the new team structure), do not add to chat history. Bonus points: create a secondary export with the selected, unmatched usernames so they can be imported to another channel.
- Provide a specific format for an import file.
- Let people do their ETL to match.
All I want is the history somewhere in the Team space. If it's easier to import to a read-only "Slack archive" channel(s), it works for me. In this case, it may be possible to skip the "match Slack usernames to Teams users" step. Depends on what usernames people had on Slack (i.e. could you match it to a person without a lookup table?).
Scott Hammer commented
I have 2 solutions for importing hipchat into MS teams. I am going to create a blog entry today and will post the link to share with everyone.
Honestly, just getting the information/conversations into Teams in a format that can be accessed and searched is the most important to me. It doesn't need to be a true Teams chat/conversation, rather just the text with date and time information. Right now we are exporting out of Skype using a 3rd party tool and into excel. From there we importing into the FIles tab in Teams. This is not an ideal situation.
We can certainly do this by using CURL and using WebHooks. So, we can export using JSON and then using CURL.exe. we can push those messages as WebHooks into Teams Channels
We can certainly do this by using CURL and using WebHooks. So, we can export using JSON and then using CURL.exe. we can push those messages as WebHooks into Teams Channels.
Same for our company. Too much collaboration content would be lost without the ability to migrate.
Without a feature to migrate channels from Slack, it would be a very slim chance for a migration to Teams within our company.
This is a big one for our office as well. We can't migrate without our slack history.