📍 المقالة الرئيسية للمجموعة: Mattermost 2026: الدليل الكامل.
لديك سنتان من النقاشات في Slack وتريد التبديل إلى Mattermost ذاتي الاستضافة دون فقدان التاريخ. هذا الدرس يفصل الإجراء الموثق عند عدة شركات فرنكوفونية بـ workspaces من 25-100 مستخدم. الهدف: نقل المحادثات والقنوات والمستخدمين والملفات دون إزعاج تشغيلي حقيقي.
المتطلبات
Mattermost في الإنتاج (راجع درس التثبيت). وصول Owner أو Admin Slack workspace. المستوى المتوقع: متوسط/متقدم. الوقت المقدر: يوم للتحضير + 30 يوماً للتبديل التدريجي. هذا الجدول الزمني يبدو طويلاً لكنه يضمن استمرارية تشغيلية ويمنح فترة موازية للتحقق من سلامة البيانات المنقولة.
الخطوة 1 — تدقيق Slack الحالي
قبل أي ترحيل، نُحصي ما لدينا. Slack admin → Settings → Workspace settings. وثِّق العدد الإجمالي للمستخدمين النشطين والموقفين، عدد القنوات العامة + الخاصة، عدد التكاملات النشطة (GitHub، Jira، Wave webhooks، إلخ)، حجم التاريخ (Slack Pro = غير محدود، Free = آخر 90 يوماً فقط). هذا الإحصاء يُصنِّع خريطة هجرة دقيقة ويتيح تقدير الجهد المطلوب.
الخطوة 2 — تصدير Slack
Slack admin → Settings → Import/Export Data → Export → All Time. التوليد يستغرق ساعات (workspace كبير) أو دقائق (صغير). يصل الإشعار عبر email عندما يصبح الأرشيف جاهزاً للتنزيل. ZIP المُصدَّر يحتوي على channels.json (قائمة القنوات)، users.json (قائمة المستخدمين)، ومجلد لكل قناة مع JSON يومي للرسائل.
تحذير Slack Free: فقط آخر 90 يوماً. إذا كنت على Free، التاريخ السابق مفقود نهائياً من جانب Slack — لا يوجد حل لاستعادته. هذه إحدى أقوى دوافع الانتقال إلى Mattermost: مع self-hosted، التاريخ غير محدود حقاً.
الخطوة 3 — تحضير الاستيراد في Mattermost
على خادم Mattermost، انسخ ZIP التصدير. ثم استخدم أداة mmctl import الرسمية لتحويل التنسيق Slack إلى تنسيق Mattermost JSONL (JSON Lines) قابل للاستيراد. هذه الأداة مدمجة في Docker container Mattermost — لا حاجة لتثبيت إضافي.
# انسخ ZIP Slack export على الخادم
scp slack-export.zip user@mattermost-server:/tmp/
# تحويل إلى تنسيق Mattermost JSONL
docker exec -it mattermost mmctl import slack TEAM_ID /tmp/slack-export.zip /tmp/mattermost-import.jsonl
الخطوة 4 — فحص JSONL
الـ JSONL يحتوي على كل البيانات الجاهزة للاستيراد. التحقق من سلامته قبل الاستيراد الفعلي يكشف المشاكل المحتملة. كل سطر هو كائن JSON واحد بنوع محدد.
head -20 /tmp/mattermost-import.jsonl
# الأسطر النموذجية: {"type":"version","version":1}, {"type":"team",...}, {"type":"channel",...}, {"type":"user",...}, {"type":"post",...}
الخطوة 5 — الاختبار على Staging
أطلق الاستيراد على نسخة Mattermost staging أولاً. هذا يحمي الإنتاج من أخطاء غير متوقعة ويتيح اكتشاف المشاكل قبل تأثيرها على المستخدمين الحقيقيين. الـ flag --apply يطبق الاستيراد فعلاً (بدون يكون dry-run).
docker exec -it mattermost mmctl import process /tmp/mattermost-import.jsonl --apply
تحقق في Studio Mattermost أن القنوات والرسائل والمستخدمين موجودون. spot-check 10 رسائل عشوائية من فترات مختلفة. تحقق من المرفقات (الصور، PDFs) قابلة للعرض.
الخطوة 6 — Mapping users Slack → Mattermost
Slack يستخدم UID من نوع U02ABC123. Mattermost ينشئ UIDs جديدة. الـ mapping يكون في الـ JSONL. مهم: للحفاظ على ملكية الرسائل، email المستخدم Slack يجب أن يطابق email Mattermost. وإلا، Mattermost ينشئ user غير نشط بشكل تلقائي ويفصل الرسائل عن مالكها الأصلي.
قبل الاستيراد، تحقق من أن جميع المستخدمين المهمين لديهم نفس البريد الإلكتروني في كلا النظامين. لمزيد من الأمان، أنشئ مستخدمي Mattermost يدوياً قبل الاستيراد بنفس البريد الإلكتروني الموجود في Slack — Mattermost سيربطهم تلقائياً بالرسائل المُستوردة.
الخطوة 7 — الترتيب الزمني
الـ JSONL يحفظ timestamps Slack الأصلية. Mattermost يعرض بشكل صحيح الترتيب في القنوات. هذا يحفظ سياق المحادثات: نقاش بدأ منذ 6 أشهر يبقى في موقعه الزمني الصحيح، مما يسمح بالعودة لقرارات قديمة دون تشويش.
الخطوة 8 — فترة موازية
لمدة 14-30 يوماً، احتفظ بـ Slack و Mattermost نشطين معاً. الرسائل الجديدة: Mattermost فقط. Slack: للقراءة فقط للتشاور التاريخي. تواصل داخلياً: «من اليوم، ننشر على Mattermost. Slack يبقى متاحاً للاستشارة لمدة 30 يوماً». هذه الفترة الموازية ضرورية لـ:
- التحقق من سلامة البيانات المُستوردة في Mattermost.
- السماح للأعضاء بالتكيف مع الواجهة الجديدة.
- اكتشاف القنوات أو المحادثات المنسية لم تُستورد بشكل صحيح.
- تكوين التكاملات الجديدة (Forgejo، Grafana) قبل التبديل النهائي.
الخطوة 9 — هجرة التكاملات
لكل تكامل Slack (GitHub، Jira، Jenkins، Wave webhooks):
- حدد URL webhook Slack الحالي.
- أنشئ webhook وارد مكافئ في Mattermost (System Console → Integrations).
- حدِّث التكوين في الخدمة الخارجية لاستخدام URL الجديد.
- اختبر مع حدث اختبار للتأكد من وصول الإشعار.
الخطوة 10 — إيقاف Slack
في J+30، بعد أن أصبح كل شيء يعمل بشكل صحيح على Mattermost:
- ألغِ اشتراك Slack Pro (البيانات تظل متاحة لمدة 30 يوماً بعد الإلغاء كأمان).
- عطل تطبيقات Slack من جانب الموظفين.
- احذف bookmarks والاختصارات في المتصفحات والتطبيقات.
- إشعار نهائي للفريق: «Slack الآن في الأرشيف فقط، يستخدم لتذكر التاريخ القديم».
الأخطاء الشائعة
| الخطأ | السبب | الحل |
|---|---|---|
| الاستيراد يتوقف على ملف تالف | تصدير Slack غير مكتمل | اطلب تصديراً جديداً من Slack |
| Users مكررون | email يختلف بين Slack/Mattermost | أنشئ users Mattermost مسبقاً مع emails مطابقة |
| الملفات المرفقة مفقودة | S3 storage مختلف | كوّن Mattermost storage قبل الاستيراد |
| Threads مكسورة | تصدير Slack قديم بدون threading | تصدير Slack حديث إلزامي |
| صلاحيات القنوات الخاصة مفقودة | غير موجودة في التصدير | أعد إنشاءها يدوياً |
| Emojis مخصصة غائبة | غير موجودة في تصدير Slack القياسي | أعد رفعها يدوياً |
التكيف مع السياق المغاربي وغرب إفريقيا
ثلاث توضيحات. عرض النطاق للتصدير. workspace 1 جيجابايت يأخذ 30 دقيقة لرفعه على اتصال مشترك في الدار البيضاء. قم بالرفع من VPS Hetzner مباشرة (gigabit) بدلاً من محطة محلية. هذا يقلل الوقت ويتجنب فشل التحميل في حالة انقطاع الشبكة. التواصل مع الفريق. أعلن قبل 7 أيام، تكوين 30 دقيقة على Mattermost، FAQ مخصصة. للفرق الناطقة بالعربية، قدم التكوين بالعربية أو ثنائي اللغة. التوفيرات. لـ 30 شخصاً في كوت ديفوار على Slack Pro = 2,600 USD سنوياً. الانتقال يوم واحد ROI فوري. على 5 سنوات، التوفير 13,000 USD يمكن استثماره في تكوين الفريق.
دروس الإخوة في المجموعة
- نشر Mattermost — قبل أي شيء آخر.
- التكاملات webhooks — لإعادة إنشاء webhooks Slack.
الأسئلة المتكررة
هجرة Discord بدلاً من ذلك؟ Discord أكثر توجهاً نحو المجتمعات. Mattermost أكثر احترافية. أدوات تصدير Discord مماثلة موجودة لكن أقل نضجاً.
التاريخ الكامل مطلوب؟ غالباً لا. 6-12 شهراً كافية. أرشيف Slack يبقى متاحاً للاستشارة في حالة الحاجة.
كم وقت لـ 100,000 رسالة؟ الاستيراد: 15-30 دقيقة. التحقق اليدوي ساعة. الفترة الموازية 14-30 يوماً.
workflows Slack مهاجرة؟ ليس تلقائياً. أعد إنشاءها في Mattermost عبر Plugins أو bot.
مكالمات صوت/فيديو Slack؟ Mattermost Calls plugin مكافئ. الانتقال سلس.
للاستزادة
- 🔝 العودة للمرجع: الدليل الكامل Mattermost 2026
- وثائق الهجرة: docs.mattermost.com/onboard/migrating-from-slack