Business Digital

Migrer de Slack vers Mattermost : tutoriel complet 2026

11 دقائق للقراءة

📍 Article principal de la série : Mattermost 2026 : guide pratique.

Vous avez 2 ans de discussions Slack et vous voulez basculer sur Mattermost auto-hébergé sans perdre l’historique. Ce tutoriel détaille la procédure validée chez plusieurs PME francophones avec workspaces 25-100 utilisateurs.

Prérequis

  • Mattermost en production (voir tutoriel installation).
  • Accès Owner ou Admin Slack workspace.
  • Niveau attendu : intermédiaire/avancé.
  • Temps estimé : 1 jour préparation + 30 jours bascule.

Étape 1 — Audit Slack actuel

Slack admin → Settings → Workspace settings. Documenter :

  • Nombre utilisateurs actifs/désactivés.
  • Nombre channels publics + privés.
  • Nombre integrations actives.
  • Volume historique (Slack Pro = illimité, Free = 90 jours derniers).

Étape 2 — Export Slack

Slack admin → Settings → Import/Export Data → Export → All Time. Génération en quelques heures (workspace large) ou minutes (petit).

L’export ZIP contient : channels.json, users.json, et un dossier par channel avec un JSON par jour.

Limite Slack Free : seulement 90 derniers jours. Si vous étiez sur Free, l’historique antérieur est perdu côté Slack.

Étape 3 — Préparer l’import Mattermost

Sur le serveur Mattermost :

# Copier le ZIP Slack export sur le serveur
scp slack-export.zip user@mattermost-server:/tmp/

# Convertir au format Mattermost JSONL
docker exec -it mattermost mmctl import slack TEAM_ID /tmp/slack-export.zip /tmp/mattermost-import.jsonl

Étape 4 — Inspecter le JSONL

Le JSONL contient toutes les données prêtes à importer. Vérifier :

head -20 /tmp/mattermost-import.jsonl
# Lignes type : {"type":"version","version":1}, {"type":"team",...}, {"type":"channel",...}, {"type":"user",...}, {"type":"post",...}

Étape 5 — Test sur staging

Lancer l’import sur instance Mattermost staging :

docker exec -it mattermost mmctl import process /tmp/mattermost-import.jsonl --apply

Vérifier dans Studio Mattermost que channels, messages, users sont présents. Spot-check 10 messages aléatoires.

Étape 6 — Mapping users Slack → Mattermost

Slack utilise des UID type U02ABC123. Mattermost crée des nouveaux UIDs. Le mapping est dans le JSONL.

Important : pour conserver la propriété des messages, l’email de l’utilisateur Slack doit correspondre à l’email Mattermost. Sinon, Mattermost crée un user inactif.

Étape 7 — Conserver l’ordre chronologique

Le JSONL préserve les timestamps Slack. Mattermost affiche correctement l’ordre dans les channels.

Étape 8 — Période de parallèle

Pendant 14-30 jours, garder Slack ET Mattermost actifs :

  • Nouveaux messages : Mattermost only.
  • Slack : lecture seule pour consultation historique récente.

Communication interne : « À partir d’aujourd’hui, on poste sur Mattermost. Slack reste consultable pour 30 jours ».

Étape 9 — Migration des integrations

Pour chaque intégration Slack (GitHub, Jira, Jenkins, Wave webhooks) :

  1. Identifier le webhook URL Slack.
  2. Créer un webhook entrant équivalent dans Mattermost (System Console → Integrations).
  3. Update la configuration côté service externe.
  4. Tester avec event de test.

Étape 10 — Décommissionnement Slack

Au jour J+30 :

  1. Annuler l’abonnement Slack Pro (data accessible 30 jours après).
  2. Désactiver les apps Slack côté employés.
  3. Supprimer les bookmarks et raccourcis.
  4. Notification finale : « Slack est désormais en archive uniquement ».

Erreurs fréquentes

Erreur Cause Solution
Import bloque sur fichier corrompu Export Slack incomplet Re-demander export Slack
Users en doublon Email diffère entre Slack/Mattermost Pré-créer users Mattermost avec emails matching
Fichiers attachés perdus S3 storage différent Configurer Mattermost storage avant import
Threads cassés Export Slack ancien sans threading Slack export récent obligatoire
Permissions channels privés perdues Pas dans export Recréer manuellement
Emojis custom absents Pas dans export Slack standard Re-uploader manuellement

Ancrage local : Sénégal, Côte d’Ivoire, Mali

Trois précisions. Bande passante export : un workspace de 1 Go prend 30 minutes à uploader sur connexion partagée Casablanca. Faire upload depuis VPS Hetzner directement. Communication équipe : annoncer 7 jours à l’avance, formation 30 min sur Mattermost, FAQ dédiée. Économies : pour PME 30 personnes en CI, économie 2 600 USD/an (Slack Pro). Justifie l’effort migration.

Tutoriels frères

FAQ

Migration Discord à la place ? Discord plus orienté communautés. Mattermost plus pro. Outils export Discord similaires.

Tout l’historique requis ? Souvent non. 6-12 mois suffisent. Archive Slack reste consultable.

Combien de temps pour 100k messages ? Import : 15-30 minutes. Vérification manuelle 1 heure.

Slack workflows migrés ? Pas automatique. Recréer dans Mattermost via Plugins ou bot.

Voice/Video appels Slack ? Mattermost Calls plugin équivalent. Migration séamless.

Pour explorer plus loin

Étape 1 — Auditer le workspace Slack avant l’export

Une migration Slack vers Mattermost réussie commence par un inventaire précis. Sans cet audit, vous risquez de migrer des canaux fantômes et de perdre l’historique des bots qui n’ont pas de pendant Mattermost. Connectez-vous à workspace-name.slack.com/admin/stats et exportez le CSV des canaux, membres et apps installées.

Membres actifs (30j) : 47
Canaux publics : 89  (dont 23 archivables)
Canaux privés : 31
DM groupes : 156
Messages 12 derniers mois : 184 320
Apps tierces : Notion, Jira, Google Drive, ClickUp, Calendly
Taille fichiers cumulés : 22,4 Go

Comment vérifier le bon fonctionnement : un tableau récapitulatif partagé avec la direction qui chiffre le volume à migrer en heures et en gigaoctets, et identifie les apps Slack sans équivalent Mattermost natif. Pour Calendly et ClickUp, prévoyez un bridge Matterbridge ou un webhook custom.

Étape 2 — Choisir le bon export Slack selon le plan

Slack propose deux niveaux d’export. Le standard couvre les canaux publics uniquement et est accessible sur tous les plans. Le corporate export couvre publics + privés + DM mais nécessite Slack Enterprise Grid et une demande légale documentée. Pour la majorité des PME ouest-africaines, on combine standard + ré-invitation manuelle dans Mattermost pour les conversations privées.

# Demander l'export
https://workspace-name.slack.com/services/export
# Sélectionner la plage : Tout l'historique
# Le ZIP arrive par email en 30 min à 6h selon le volume
# Format : channels.json, users.json, <canal>/YYYY-MM-DD.json

Téléchargez le fichier workspace-export-2026-05-05.zip. Vérifiez son intégrité avec sha256sum. Le bon résultat se reconnaît à : la décompression révèle un fichier channels.json contenant la liste exacte de vos canaux publics et un dossier par canal avec les messages au format JSON quotidien.

Étape 3 — Préparer le serveur Mattermost cible

Avant l’import, le serveur Mattermost doit déjà tourner avec une base PostgreSQL 15+ (la 13 est EOL en novembre 2025). Pour 50 utilisateurs et 200 000 messages historiques, un VPS Hetzner CCX13 (16 EUR/mois, environ 10 495 FCFA, 4 vCPU dédiés, 16 Go RAM) suffit confortablement.

# docker-compose extrait
services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: mattermost
      POSTGRES_USER: mmuser
      POSTGRES_PASSWORD: ${PG_PASS}
    volumes:
      - pg_data:/var/lib/postgresql/data
  mattermost:
    image: mattermost/mattermost-team-edition:9.11
    depends_on: [postgres]
    environment:
      MM_SQLSETTINGS_DATASOURCE: postgres://mmuser:${PG_PASS}@postgres:5432/mattermost?sslmode=disable
    volumes:
      - mm_data:/mattermost/data

Vous saurez que tout fonctionne quand : https://mm.itskillscenter.io affiche la page de configuration initiale et un compte admin admin@itskillscenter.io peut se connecter. Créez immédiatement l’équipe cible itsc qui recevra les canaux importés.

Étape 4 — Convertir l’export Slack au format JSONL Mattermost

Mattermost ne digère pas l’export Slack tel quel. L’outil officiel mmetl (écrit en Go par Mattermost Inc.) transforme le ZIP Slack en fichier JSONL Mattermost. Téléchargez la dernière release sur GitHub.

wget https://github.com/mattermost/mmetl/releases/download/0.1.5/mmetl.linux-amd64.tar.gz
tar xzf mmetl.linux-amd64.tar.gz
./mmetl transform slack \
  --team itsc \
  --file workspace-export-2026-05-05.zip \
  --output mattermost-import.jsonl

L’opération prend de 1 à 20 minutes selon la taille. Indicateur que tout est en place : un fichier mattermost-import.jsonl est généré, et la dernière ligne du log mmetl indique Transform completed successfully sans warning rouge.

Étape 5 — Importer les fichiers attachés Slack vers Mattermost

L’export Slack contient des URLs vers les fichiers hébergés sur les serveurs Slack, mais ces URLs expirent dans certains cas et restent accessibles uniquement avec un token d’équipe. Pour rapatrier les pièces jointes (images, PDF, vidéos) dans Mattermost, utilisez l’option --attachments-dir de mmetl avec un dump préalable.

# Dump des fichiers via API Slack
mkdir slack-files
python3 slack-files-dumper.py --token xoxp-... --output slack-files/
# Re-transform avec attachments
./mmetl transform slack --team itsc \
  --file workspace-export-2026-05-05.zip \
  --attachments-dir slack-files \
  --output mattermost-import.jsonl

Validation pratique : la taille du JSONL grimpe (les références sont remplacées par des chemins locaux) et le dossier slack-files/ contient un sous-dossier par canal avec les pièces jointes intactes.

Étape 6 — Lancer l’import Mattermost et superviser

L’import s’exécute via mmctl import process. Compressez d’abord le JSONL et les fichiers en un ZIP, uploadez-le sur le serveur Mattermost dans le dossier data/import/, puis lancez l’import.

zip -r mattermost-import.zip mattermost-import.jsonl slack-files/
docker cp mattermost-import.zip mattermost:/mattermost/data/import/
mmctl import process mattermost-import.zip
# Suivre le job
mmctl import job list
mmctl import job show <job-id>

L’import dure de 30 minutes à plusieurs heures pour 200 000 messages. Vous saurez que tout fonctionne quand : mmctl import job show retourne status: success et le canal #general dans Mattermost affiche les messages historiques avec les bons auteurs et horodatages.

Étape 7 — Inviter les utilisateurs et notifier l’équipe

L’import crée les utilisateurs en mode désactivé. Réactivez-les en lot via mmctl, puis envoyez l’invitation. Pour une équipe distribuée Dakar-Abidjan-Cotonou, prévoyez un message d’annonce qui couvre les fuseaux : envoi à 9h UTC = 9h Dakar = 10h Cotonou = 9h Abidjan.

mmctl user list --inactive --json | jq -r '.[].id' | \
  xargs -I{} mmctl user activate {}
mmctl user invite admin@itskillscenter.io \
  --team itsc \
  --message "Bienvenue sur Mattermost. Votre historique Slack est intégralement importé."

Comment vérifier le bon fonctionnement : chaque utilisateur reçoit un email contenant le lien d’activation et accède à son historique Slack importé en moins de 24h après le go-live. Mesurez le taux de premier login sur 7 jours : viser 90 % minimum.

Étape 8 — Verrouiller Slack en lecture seule et basculer le DNS

Pour éviter les fuites entre les deux plateformes pendant la transition, désactivez l’envoi de messages dans Slack via le paramètre admin Workspace Settings → Permissions → Posting in Channels = Workspace owners only. Affichez un canal #info avec le lien Mattermost et la date de coupure.

# Sur le canal #general Slack
/topic Migration vers Mattermost le 2026-05-12. Lien : https://mm.itskillscenter.io
# Désactiver le compte Slack 30 jours plus tard
https://workspace-name.slack.com/admin/billing
=> Cancel subscription

Conservez l’export Slack dans Scaleway Object Storage Paris pendant 5 ans (obligation comptable Sénégal). Validation pratique : 30 jours après la bascule, plus aucun message n’est posté sur Slack et le coût mensuel Slack disparaît de votre facture Stripe — économie typique 8 à 15 EUR par utilisateur et par mois, soit 5 248 à 9 840 FCFA récupérés par siège. Vous avez maintenant migré votre équipe vers Mattermost auto-hébergé avec historique intact, fichiers rapatriés, utilisateurs réactivés et plan de coupure documenté.

Étape 9 — Reproduire les apps Slack manquantes côté Mattermost

Notion, ClickUp, Calendly et Linear ont parfois des intégrations Slack riches sans équivalent natif Mattermost. Pour chaque app, deux options : utiliser un bridge open source (Matterbridge couvre déjà Discord, IRC, Telegram, WhatsApp) ou écrire un webhook custom de 50 lignes en Node.js qui parse les notifications Slack et les republie au format Mattermost. Cas concret : Calendly envoie les nouvelles réservations via webhook ; redirigez vers un bridge qui formate en bloc Mattermost.

// calendly-bridge.mjs - serveur Express minimal
import express from 'express';
const app = express();
app.use(express.json());
app.post('/calendly', async (req, res) => {
  const { event, payload } = req.body;
  if (event === 'invitee.created') {
    await fetch('https://mm.itskillscenter.io/hooks/abcd1234', {
      method: 'POST',
      headers: {'Content-Type':'application/json'},
      body: JSON.stringify({
        text: `:calendar: Nouvelle réservation **${payload.name}** le ${payload.event.start_time}`,
        channel: 'sales-dakar'
      })
    });
  }
  res.sendStatus(200);
});
app.listen(3000);

Comment vérifier le bon fonctionnement : une réservation test sur votre lien Calendly déclenche un message dans #sales-dakar moins de 5 secondes plus tard, avec nom du prospect, fuseau horaire et durée du rendez-vous. Vous reproduisez ainsi l’expérience Slack sans dépendance commerciale supplémentaire.

Étape 10 — Documenter le ROI de la migration pour la direction

Une migration réussie techniquement est un échec si la direction ne voit pas l’économie. Préparez un tableau comparatif sur 36 mois pour justifier l’investissement initial (1 à 3 jours d’ingénieur) face au coût récurrent Slack. Pour 50 utilisateurs sur Slack Business+ à 12,50 USD/mois (environ 8 200 FCFA), c’est 7 500 USD/an de licences évaporées. Côté Mattermost auto-hébergé : 16 EUR/mois VPS Hetzner CCX13 + 5 EUR/mois Scaleway backup + 2h/mois admin = environ 380 EUR/an, soit 249 264 FCFA contre 4 920 000 FCFA pour Slack — une division par 19 du coût.

# Tableau Excel partagé avec la direction
              Slack BizPlus    Mattermost auto
Licences/an   4 920 000 FCFA   0
VPS/an        0                149 569 FCFA
Backup/an     0                39 357 FCFA
Admin 2h/mois 0                au choix interne
Total an 1    4 920 000 FCFA   188 926 FCFA
Économie an 1                   4 731 074 FCFA

Le marqueur de succès : la direction signe la décision de migration en moins d’une semaine après lecture du tableau, et l’équipe ops dispose d’un budget pour 10h d’ingénieur supplémentaires consacrées à l’optimisation post-migration (Authentik SSO, Matterbridge WhatsApp, dashboards Grafana). Vous avez transformé une migration technique en levier financier mesurable, une posture qui ouvre la porte aux migrations suivantes (GitLab vers Gitea, Notion vers Outline, Trello vers Focalboard).

مشاركة