Skip to content

Import from Mattermost

You can import your current workspace into a Zulip organization. It’s a great way to preserve your workspace history when you migrate to Zulip, and to make the transition easy for the members of your organization.

The import will include your organization’s:

  • Name and Logo
  • Message history, including attachments and emoji reactions
  • Users, including names, emails, roles, avatars, time zones, and custom profile fields
  • Channels, including all user subscriptions
  • Custom emoji

To import your Mattermost organization into Zulip, you will need to take the following steps, which are described in more detail below:

  1. Export your Mattermost data.
  2. Import your Mattermost data into Zulip.
  3. Get your organization started with Zulip!

Import your organization from Mattermost into Zulip

Section titled “Import your organization from Mattermost into Zulip”

Mattermost’s bulk export tool allows you to export all public and private channel messages.

The instructions below correspond to various common ways Mattermost is installed; if yours isn’t covered, contact us and we’ll help you out.

Replace <username> and <server_ip> with the appropriate values below.

  1. SSH into your Mattermost production server.
    Terminal window
    ssh <username>@<server_ip>
  2. Navigate ../server/bin/ directory in your Mattermost installation and locate the mmctl executable. All subsequent mmctl commands are executed using this executable.
  3. Log in to a mmctl instance.
    Terminal window
    mmctl auth login <server_ip>
    You’ll be prompted for a username (use your admin user), password, and for a connection name. The connection name can be anything you want.
  4. Create a full export of the server, including attached files.
    Terminal window
    mmctl export create
  5. List all of the exports on the server, and copy the name of the latest one to your clipboard.
    Terminal window
    mmctl export list
  6. Download the export file to the server, replacing latest_export with the actual file name from the previous step and /local/dir/ with the download destination.
    Terminal window
    mmctl export download latest_export.zip /local/dir/latest_export.zip
  7. Finally, copy the exported zip to your local computer.
    Terminal window
    scp <username>@<server_ip>:latest_export.zip /local/dir

To start using Zulip, you will need to choose between Zulip Cloud and self-hosting Zulip. For a simple managed solution, with no setup or maintenance overhead, you can sign up for Zulip Cloud with just a few clicks. Alternatively, you can self-host your Zulip organization. See here to learn more.

If you are using Zulip Cloud, we’ll take it from here! Please email support@zulip.com with the following information:

  1. The subdomain you would like to use for your organization. Your Zulip chat will be hosted at <subdomain>.zulipchat.com.
  2. The exported data file containing your workspace message history export.

Whether you are using Zulip Cloud or self-hosting Zulip, here are a few notes to keep in mind about the import process:

  • Mattermost does not export workspace settings, so you will need to configure the settings for your Zulip organization. This includes settings like email visibility, message editing permissions, and how users can join your organization.
  • Mattermost’s user roles are mapped to Zulip’s user roles in the following way:
    Mattermost roleZulip role
    Team administratorOwner
    MemberMember
  • Mattermost’s export tool does not support exporting user avatars or message edit history.
  • Direct messages will only be imported from Mattermost workspaces containing a single team. This is because Mattermost’s data exports do not associate direct messages with a specific Mattermost team.
  • Messages in threads are imported, but they are not explicitly marked as being in a thread.

Once the import process is completed, you will need to:

  1. Configure the settings for your organization, which are not exported. This includes settings like email visibility, message editing permissions, and how users can join your organization.
  2. All users from your previous workspace will have accounts in your new Zulip organization. However, you will need to let users know about their new accounts, and decide how they will log in for the first time.
  3. Share the URL for your new Zulip organization, and (recommended) the Getting started with Zulip guide.
  4. Migrate any integrations.

When user accounts are imported, users initially do not have passwords configured. There are a few options for how users can log in for the first time.

Allow users to log in with non-password authentication

When you create your organization, users will immediately be able to log in with authentication methods that do not require a password. Zulip offers a variety of authentication methods, including Google, GitHub, GitLab, Apple, LDAP and SAML.

Send password reset emails to all users

You can send password reset emails to all users in your organization, which will allow them to set an initial password.

If you imported your organization into Zulip Cloud, simply email support@zulip.com to request this.

Send password reset emails (self-hosted organization)

  1. To test the process, start by sending yourself a password reset email by using the following command:
    Terminal window
    ./manage.py send_password_reset_email -u username@example.com
  2. When ready, send password reset emails to all users by using the following command:
    Terminal window
    ./manage.py send_password_reset_email -r '' --all-users

Manual password resets

Alternatively, users can reset their own passwords by following the instructions on your Zulip organization’s login page.