With Atlassian's announcement of the replacement of HipChat and Stride with Slack, Isos Technology was left with the question of what to do. We have been using HipChat as our primary ChatOps tool from the beginning. We have built up a lot of content in HipChat, with it being a core tool in our distributed company model. While it is true that we didn't need to move to Slack immediately, we felt it was a good idea to migrate to slack for two key reasons: (1) The longer we wait, the more content we would build up and the less time we would have to deal with unforeseen complications. (2) Many of our clients use HipChat, and we wanted to be able to answer their migration questions as well as help them with migrations based on hands-on experience.
As the technical lead on our HipChat migration, this blog post summarizes a few of the things I encountered during our successful migration as well as initial impressions.
Trial runs at migration
Before doing your actual migration, you have to perform trial migration runs. Though you could pull the trigger without any trial runs, you can also shove a fork in a light socket... to the same effect.
One of the limitations with HipChat has always been the restriction on email addresses. If you were a member of a team using non-hosted HipChat, you were unable to use the same email address for working with another team using non-hosted HipChat. As a consultant, this is an issue due to potentially needing access to multiple non-hosted HipChat instances. While this is something you could get around by using + notation in your email (myname+identifierX@domain.com), this has always been kludgy. In Slack, this limitation does not exist. As a consultant this makes my life easier.
You may be wondering why I led with this point in a section on trial runs at migration. The ability to create multiple Slack workspaces (team spaces in Slack) with the same email address is invaluable when migrating. This will allow you to perform multiple tests on your migration, tweaking options and documenting how you want to proceed. This will let you tailor your migration to your team's needs.
It is important to choose the right account type and billing while doing your trial migrations. While the free Slack accounts are great, you are limited to 10,000 messages. This can make it difficult to fully prove out a complete restore if you've been using HipChat for an extended period of time. At the time of our trial runs, Slack was giving all new accounts $50 in credits, which helped unburden us off the free account limitations. Make sure you sign up for month-to-month billing.
User Importing Decisions for Deactivated Users and HipChat Guests
During the import, you will be given several options for how to handle users, including users that have been deactivated in HipChat and users created in rooms with Guest Access turned on. You will be presented with these options:
Here is the logic we used during our trial runs:
- We went with Create deactivated users, without inviting anyone for all but a small group of testers. This imported all messages under the appropriate users, imported Direct Messages between users, and allowed us to activate additional testers after the fact.
- Any users that were missing email addresses (a.k.a. guests that used HipChat via Guest Access mode), were mapped to Do not create a user, just import messages. This gave us a full message history without having to assign email addresses to guest users that wouldn't be used again (see why they won't be used again below).
- Our end state would be importing messages into an existing Slack channel that we've had for awhile to test functionality for customers. Because of this, we had some users that will need to be directly mapped.
For our final migration, we changed this process slightly. Since everyone at Isos needed a new account in the domain, we changed the policy for current employees in HipChat to Create and invite users.
Room Importing Decisions
HipChat had some default rooms that came out of the box, like General Announcements and Anything Goes (or in our case Almost Anything Goes). Slack has similar rooms called #general and #random. During the import process we chose to map these HipChat rooms to their Slack analogs:
A very important consideration when performing the migration was whether or not to retain the Public/Private Status of a room. During the import you can choose to enforce creating rooms as public, private or retaining privacy settings from the HipChat backup. We chose to keep some public and some private because of the way Slack handles guests (see more below).
How Long Did the Import Take?
Our first export from HipChat was about 500 MB and took about 24 hours to import. This included 3,329,874 messages (quite a bit more than the 10,000 max for free accounts!). Thanks to the detailed break down Slack sends when importing completes, we learned there was a room called "Stuff we should pay attention to" that included 1,781,811 messages. It turns out that room was full of messages that we didn't actually need to pay attention to. We deleted this channel from HipChat and then attempted another migration. The second export from HipChat was about 190MB and took about 6 hours to import. The key takeaway here is to review the Slack report, and decide if you actually need everything that is in your HipChat instance.
First Reactions to Slack
With HipChat being a core piece of our ChatOps processes, many of our team members are new(ish) to Slack. We've been excited to discover some awesome improvements to our daily life from switching to Slack.
How Guests are Handled
Instead of giving relatively anonymous guest access to specific channels, Slack lets us invite users and restrict them to certain channels. Check out more details here: Multi-Channel and Single-Channel Guests.
There are a TON of Keyboard Shortcuts
I'm a huge fan of keyboard shortcuts... please don't make me use the trackpad! Slack is full of shortcuts: Slack keyboard shortcuts.
User Selectable Notification Noise
I'll forever miss (and not miss) HipChat notification noise. It's going to go the way of the Nextel Walkie Talkie notification noise I grew up with. In Slack we get to pick what noise we are alerted to! Check it out: Guide to Slack notifications.
Migration Doesn't End With Migration
When migrating, keep in mind that your Slack workspace will be a living, breathing part of your organization. The state you start with WILL change over time. So don't be afraid to experiment during your migration trials, and don't get bogged down with creating a workspace that will look the same years down the road. The quicker you get your organization onto slack, the quicker these improvements can begin to grow naturally.