ترحيل البيانات إلى Odoo: كيف تنجزه بشكل صحيح من المرة الأولى

يظل ترحيل البيانات أكثر بنود خطة أي مشروع لتخطيط موارد المؤسسات (ERP) تعرّضاً للاستهانة، فيما أرى. وبعد أكثر من 100 عملية تطبيق لـ Odoo، قلّما يكون البرنامج هو ما يُفشل الإطلاق الفعلي، فالبيانات هي التي تفعل ذلك: تصل متأخرة، وتصل غير نظيفة، ثم تُحمَّل مرة واحدة على عجل دون أي وسيلة سهلة للتراجع عنها. وفي هذا الدليل أعرض كيف أحول دون ذلك: ما الذي يعنيه «الترحيل» فعلاً، وما الذي يستحق النقل، والآليات التي تمنع الفوضى قبل وقوعها.

مهمّتان مختلفتان يجمعهما اسم «الترحيل»

حين يقول العميل «ترحيل»، فهو يقصد في الغالب إحدى مهمّتين مختلفتين اختلافاً كبيراً، والخلط بينهما هو الخطأ الأول.

المهمة الأولى هي استيراد البيانات إلى نظام جديد: أي الانتقال من نظام قديم، سواء كان جداول بيانات أو برنامج محاسبة قديماً أو نظاماً آخر لتخطيط موارد المؤسسات (ERP)، إلى قاعدة بيانات Odoo جديدة تماماً. ويتيح Odoo استيراد البيانات إلى أي كائن من كائنات الأعمال فيه، كجهات الاتصال والمنتجات وكشوف الحساب البنكية وقيود اليومية والطلبات وغيرها، انطلاقاً من ملفات Excel (.xlsx) أو CSV (.csv).

والمهمة الثانية هي ترقية الإصدار: فبياناتك موجودة أصلاً في Odoo، وأنت تنقل قاعدة البيانات من إصدار رئيسي إلى إصدار أحدث. وهذا ليس استيراداً، بل عملية مُدارة تنفّذها Odoo على منصة الترقية الخاصة بها. وقد وضعت Odoo هنا حدّاً صارماً، إذ لا تشمل خدمة الترقية الانتقال من نظام آخر لتخطيط موارد المؤسسات (ERP) إلى Odoo، ولا تغيير النسخة أو نوع الاستضافة. وبما أن الأدوات والمخاطر تختلف في الحالتين اختلافاً كاملاً، سأتناول كلاً منهما على حدة.

ما الذي يُرحَّل وما الذي يُترك خلفك

قبل أن تعدّ أي ملف استيراد، حدّد ما يحتاج فعلاً إلى الانتقال. فهذا هو الحوار الذي يوفّر أكبر قدر من المال، وجوابي المعتاد فيه يفاجئ الناس: انقل أقل مما تظن.

  • البيانات الرئيسية: نعم. العملاء والموردون والمنتجات ودليل الحسابات. ولكل منها في Odoo كائن أعمال مخصّص.
  • البنود المفتوحة: نعم. الفواتير غير المسدّدة، وفواتير الموردين المفتوحة، والطلبات التي لم تُسلَّم، والمخزون الحالي. فأنت تحتاج إليها جاهزة في النظام منذ اليوم الأول كي يستمر عملك التجاري؛ وفي متاجر التجزئة التي تعمل بنقاط البيع يتحوّل رصيد المخزون الذي مضى على تحديثه يوم كامل إلى مشكلة يراها العميل خلال ساعات. وإذا كانت المنشأة تتتبّع الدفعات أو الأرقام التسلسلية، فيجب أن يُرحَّل المخزون الافتتاحي ومعه هذه التفاصيل، لا أن يُختزل في كمية إجمالية، وإلا اختلّ تتبّع المخزون منذ اليوم الأول.
  • الأرصدة الافتتاحية: نعم، لكن بوصفها أرصدة لا تاريخاً. حمِّل أرصدة ميزان المراجعة الختامي لديك في صورة قيود يومية افتتاحية، لتكون الدفاتر سليمة منذ الإطلاق الفعلي.
  • سجل المعاملات الكامل: في الغالب لا. فسنوات من الفواتير المُصدَرة والتذاكر المغلقة هي أكبر مصدر لجهد الترحيل، وأقل البيانات التي يُرجَع إليها بعد ذلك.

ورأيي الصريح بعد مئة مشروع أن جرّ عشر سنوات كاملة من المعاملات المغلقة إلى قاعدة بيانات جديدة نادراً ما يستحق العناء. أبقِ النظام القديم للقراءة فقط ليكون أرشيفك لما قد تحتاج إليه بين حين وآخر من فاتورة قديمة. هذه مسألة تقدير لا قاعدة جامدة، لكن الأصل أن يكون النقل في أضيق نطاق.

آليات الاستيراد التي تحميك

اربط أعمدتك بالحقول بعناية. عند رفع الملف يستنتج Odoo نوع الحقل المناسب لكل عمود بالتخمين المدروس بناءً على الأسطر العشرة الأولى، فالعمود الذي لا يضم سوى أرقام صرفة لا تُعرض عليه، مثلاً، إلا الحقول من نوع العدد الصحيح (Integer). وأي عمود لم ينجح في مطابقته تضبطه بنفسك من قائمة منسدلة، وفي وضع المطوّر يمنحك خيار «السماح بالمطابقة مع الحقول الفرعية» (Allow matching with subfields) تحكماً أدق.

ابدأ دائماً بزر «اختبار» (Test). وتسلسل العمل كالآتي: ارفع الملف، وعدّل خيارات تنسيق CSV إن لزم، واربط كل عمود بحقل في Odoo، ثم اضغط اختبار (Test) للتأكد من سلامة البيانات، ولا تضغط استيراد (Import) إلا بعد ذلك. وتنص وثائق Odoo بلا مواربة على أن عمليات الاستيراد نهائية ولا يمكن التراجع عنها؛ ولا تنفع عوامل التصفية الخاصة بتاريخ الإنشاء وتاريخ آخر تعديل إلا في العثور، بعد وقوع الخطأ، على ما طالته عملية استيراد معيبة.

استخدم المعرّفات الخارجية (External ID). فهي ما يفرّق بين ترحيل مضبوط وفوضى مثقلة بالسجلات المكرّرة. والمعرّف الخارجي بمثابة هوية فريدة لكل صف، ويمكنك إعادة استخدام المعرّفات الموجودة في برنامجك القديم. وتكمن قوّتها في إعادة الاستيراد: فإذا تضمّن ملفك عمود معرّف خارجي (أو معرّف قاعدة البيانات) فإن Odoo يعدّل السجلات التي سبق استيرادها بدلاً من أن ينشئ سجلات جديدة. وهذا ما يتيح لك استيراد الملف نفسه عدة مرات دون تكرار، ولا تأتي عملية التحميل الأولى سليمة تماماً أبداً. غير أن لهذه الآلية شرطاً هو الثبات: فإذا تغيّر المعرّف الخارجي أو حُذف بين عملية وأخرى، فقد يضيف Odoo سجلاً مكرراً بدلاً من تحديث السجل الأصلي. فأبقِ المعرّفات ثابتة، ولا تحذف عمود المعرّف أبداً.

بل إن Odoo يهيّئ مساراً متكاملاً للتحديث بالتصدير ثم الاستيراد: فعِّل في نافذة التصدير (Export) خيار «أريد تحديث البيانات (تصدير متوافق مع الاستيراد)»، وهو في الواجهة الإنجليزية I want to update data (import-compatible export)، فيضيف عمود المعرّف الخارجي تلقائياً، لتعدّل الملف ثم تعيد استيراده بوصفه تحديثاً جماعياً مضبوطاً. وخطّط كذلك للأحجام الكبيرة: فقد تنتهي مهلة عمليات الاستيراد الضخمة جداً قبل أن تكتمل، ولذلك اعمل على دفعات أصغر.

ترقية الإصدارات: المسار الرسمي

أما ترقية قاعدة بيانات قائمة في Odoo فعمل من طبيعة مختلفة، تقدّمه Odoo بوصفه خدمة مُدارة، ويتّخذ دائماً الشكل نفسه: تطلب قاعدة بيانات تجريبية مرقّاة إلى الإصدار المستهدف، وتختبرها اختباراً صارماً، ثم، وبعد ذلك فقط، تطلب ترقية بيئة الإنتاج.

قاعدة البيانات التجريبية هي شبكة الأمان لديك، وتُحيِّدها Odoo حتى لا يصل أثرها إلى العالم الفعلي: فتُعطَّل الإجراءات المجدولة، وتُوقَف خوادم البريد الصادر، ويتحوّل مزوّدو الدفع وشركات الشحن إلى وضع الاختبار (Sandbox)، وتُوقَف المزامنة مع البنوك.

ويجري التشغيل الإنتاجي على غرار الاختبار، مع ضبط الغرض (Purpose) على «الإنتاج» (Production)، لكنه طريق باتجاه واحد لا عودة منه: فبمجرد طلبه تصبح قاعدة البيانات غير متاحة حتى تنتهي الترقية، وبعد اكتمالها لا يمكن الرجوع. ولذلك أحدّد له موعداً في فترة يقلّ فيها الاستخدام، وأجري أولاً بروفة على قاعدة بيانات تجريبية جديدة.

وثمة قيدان يفاجئان الكثيرين. الإصدارات: لا يمكنك الترقية إلا إلى إصدار لا يزال مدعوماً، إذ يحظى كل إصدار رئيسي بثلاث سنوات من الدعم القياسي، ويبقى آخر إصدار انتهى دعمه صالحاً هدفاً للترقية ستة أشهر بعد انتهاء دورة حياته. الشيفرة المخصّصة: لا يمكن ترقية قاعدة بيانات تحتوي وحدات مخصّصة قبل أن يتوافر إصدار من هذه الوحدات للإصدار المستهدف؛ وفي تحليلي لمقدار ما يتبيّن أنه مبني بالتخصيص في تطبيق Odoo نموذجي نادراً ما تكون هذه الطبقة صغيرة، ولهذا تحديداً ينبغي اختبار البيانات المرحَّلة مع هذه الطبقة، لا على قاعدة بيانات قياسية فحسب. وتغطي خدمة Odoo التطبيقات القياسية وتخصيصات Studio، لكنها تستثني الوحدات التي بُنيت داخلياً أو على يد جهات خارجية، ومنها شركاء Odoo، ما لم تكن مشمولة بعقد صيانة التخصيصات. والترقية مجانية ضمن Odoo Enterprise؛ أما جعل تخصيصاتك متوافقة فهو الجزء الذي ينبغي أن تخطّط له وترصد له الموارد.

القاسم المشترك: سواء كنت تستورد إلى نظام جديد أو ترقّي نظاماً قديماً، فالقاعدة واحدة: لا تنفّذ العملية مرة واحدة فقط، ولا تبدأ بها في بيئة الإنتاج، واحتفظ دائماً بوسيلة تتحقق بها من النتيجة قبل أن يبدأ أي مستخدم العمل في النظام.

أخطاء الترحيل التي أراها تتكرّر

تتكرّر الإخفاقات نفسها، وكل واحد منها يمكن تفاديه. وترحيل البيانات غير النظيفة كما هي واحد من أنماط الفشل السبعة التي أراها أكثر من غيرها في عمليات تطبيق Odoo، وهو يبدأ من هنا تحديداً:

  • تحميل بيانات رئيسية غير نظيفة كما هي. فالعملاء المكرّرون وسجلات المنتجات نصف المكتملة لا تتحسّن داخل Odoo، بل تتضاعف، وأعمال التنظيف ترفع بصمت تكلفة التطبيق. نقِّ البيانات قبل أن تحمّلها.
  • إغفال المعرّفات الخارجية. فبدونها تُنشئ عملية الاستيراد الثانية سجلات مكرّرة بدلاً من تحديث القائمة منها، ولا تخلو الأولى من الأخطاء أبداً.
  • ترحيل بيانات تاريخية لا يطّلع عليها أحد. تُهدر الفرق أسابيع في نقل سنوات من المعاملات المغلقة التي لن يفتحها أحد بعد ذلك. أرشِف النظام القديم بدلاً من ذلك.
  • غياب الاعتماد الرسمي للمطابقة. إذا لم تؤكد الإدارة المالية أن الأرصدة الافتتاحية والبنود المفتوحة تتطابق مع النظام القديم، فأنت لم تُطلق نظامك فعلاً بعد، بل تعمل بالتخمين.
  • الانتقال دفعة واحدة (Big-bang) دون دورات اختبار. عملية استيراد واحدة أو ترقية واحدة تُنفَّذ مباشرةً في بيئة الإنتاج ودون بروفة. فالاستيراد لا يمكن التراجع عنه، وترقية الإنتاج لا يمكن عكسها، وهذا أخطر أسلوب لتنفيذ العمل.

كيف أدير عملية الترحيل

تسلسل العمل لديّ نادراً ما يتغيّر، ويجب أن يُدرَج منذ اليوم الأول في الجدول الزمني الأشمل لتطبيق Odoo بدلاً من أن يُحشر في اللحظة الأخيرة:

  1. تحديد نطاق البيانات: الاتفاق على ما يُنقل وما يبقى في الأرشيف.
  2. التنقية عند المصدر: إزالة التكرار وتصحيح البيانات قبل أن تقترب من Odoo.
  3. بناء القوالب: قالب لكل كائن، ومعرّف خارجي على كل سجل.
  4. استيراد اختباري إلى قاعدة بيانات تجريبية على دفعات، مع استخدام خطوة الاختبار (Test) في كل مرة.
  5. المطابقة والحصول على اعتماد كتابي من الإدارة المالية على الأرصدة والبنود المفتوحة.
  6. التحويل النهائي (Cutover): التحميل الأخير إلى بيئة الإنتاج في فترة هادئة، ثم التحقق من الأعداد والإجماليات.

وفي ترقية الإصدار يبقى الهيكل نفسه: قاعدة بيانات تجريبية، وبروفة، ومطابقة، ثم تشغيل مجدول على بيئة الإنتاج. وهذا الانضباط هو ما يجعل الترحيل عملاً رتيباً بلا مفاجآت، وهو بالضبط ما تريده يوم الإطلاق الفعلي.

تتغيّر أدوات الاستيراد في Odoo وعملية الترقية ومُدد دعم الإصدارات بمرور الوقت، وما ورد هنا يعكس وثائق Odoo المنشورة للإصدار 19.0 اعتباراً من يوليو 2026. تحقّق دائماً من السلوك الحالي في وثائق الاستيراد لدى Odoo ووثائق الترقية قبل أن تبني خطة أي مشروع عليها.

الأسئلة الشائعة

هل يمكن التراجع عن استيراد البيانات في Odoo؟
لا. تنص وثائق Odoo صراحةً على أن عمليات الاستيراد نهائية ولا يمكن التراجع عنها، فليس هناك زر للتراجع. ولهذا لا أحمّل أي بيانات مباشرةً إلى بيئة الإنتاج دون أن أشغّل أولاً خطوة الاختبار (Test) المدمجة في النظام، فهي تتحقق من صحة الملف قبل أن يُكتب أي شيء في قاعدة البيانات. وإذا أخفقت عملية استيراد فعلاً، فبوسع عوامل التصفية الخاصة بتاريخ الإنشاء وتاريخ آخر تعديل أن تعينك على العثور على السجلات التي طالتها، لكن هذا تنظيف لما حدث لا تراجع عنه. اعمل على دفعات صغيرة، واحتفظ بنسخة احتياطية قبل كل عملية استيراد.
كيف أستورد البيانات إلى Odoo دون أن تتكرّر السجلات؟
استخدم المعرّفات الخارجية (External ID). يعامل Odoo المعرّف الخارجي، أو معرّف قاعدة البيانات (Database ID)، بوصفه معرّفاً فريداً لكل صف، وإذا كان ملف الاستيراد يتضمن هذا العمود فإن السجلات التي سبق استيرادها تُعدَّل بدلاً من أن تُنشأ من جديد، إذ يقرّر Odoo تلقائياً، صفاً بصف، هل ينشئ سجلاً أم يحدّث سجلاً قائماً. وهذا ما يتيح لك استيراد الملف نفسه عدة مرات دون تكرار السجلات. غير أن لهذه الآلية شرطاً هو ثبات المعرّفات: فإذا تغيّر المعرّف الخارجي أو حُذف بين عملية وأخرى، فقد يضيف النظام سجلاً مكرراً بدلاً من تحديث السجل الموجود، ولذلك لا تحذف عمود المعرّف أبداً.
كيف تتم ترقية إصدار Odoo؟
تقدّمها Odoo بوصفها خدمة مُدارة، ويقوم مسارها على خطوتين إلزاميتين: الاختبار أولاً ثم الإنتاج. فتطلب في البداية نسخة مرقّاة من قاعدة بياناتك على الإصدار المستهدف وتختبرها اختباراً وافياً، وقواعد البيانات التجريبية هذه مُحيَّدة، فالإجراءات المجدولة والبريد الصادر والمزامنة مع البنوك معطَّلة فيها ولا يمكن أن تؤثّر في العالم الفعلي، ثم لا تطلب ترقية بيئة الإنتاج إلا حين تطمئن إلى النتيجة. وأثناء التشغيل على بيئة الإنتاج تكون قاعدة البيانات غير متاحة إلى أن تنتهي الترقية، وبعد اكتمالها يستحيل الرجوع إلى الإصدار السابق، ولهذا أبدأ دائماً ببروفة على قاعدة بيانات تجريبية جديدة.
هل ستبقى وحداتي المخصّصة تعمل بعد ترقية Odoo؟
ليس تلقائياً. تنص وثائق Odoo على أن قاعدة البيانات التي تحتوي وحدات مخصّصة لا يمكن ترقيتها إلى أن يتوافر إصدار من تلك الوحدات للإصدار المستهدف، ولذلك يجب أولاً جعل الشيفرة متوافقة. وتغطي خدمة الترقية لدى Odoo التطبيقات القياسية وتخصيصات Studio، لكنها تستثني صراحةً الوحدات التي بُنيت داخلياً أو على يد جهات خارجية، ومنها شركاء Odoo، ما لم تكن مشمولة باشتراك صيانة التخصيصات. فخطّط لترقية الشيفرة المخصّصة بوصفها مسار عمل قائماً بذاته، يسير بالتوازي مع ترقية قاعدة البيانات.

قراءات ذات صلة

مزيد من الأدلة التي كتبتها: ما الذي يحدّد فعلاً تكلفة تطبيق Odoo في الإمارات، وفيه يُعدّ ترحيل البيانات من أكبر العوامل وأكثرها استهانةً؛ وميزات Odoo 19 الجديدة: ما الذي يهمّ فعلاً، وهو نظرة مباشرة إلى الإصدار الذي ربما تتجه إلى الترقية إليه؛ وOdoo Community مقابل Enterprise: كيف تختار، وهو قرار النسخة الذي يحدّد ما إذا كانت ترقياتك مجانية ومُدارة.

هل تخطّط لعملية ترحيل أو ترقية؟

أنا استشاري Odoo تقني ووظيفي في دبي، ورئيس المشاريع في Techbot Information Technology LLC، وهي من شركاء Odoo في الإمارات، بخبرة تتجاوز 10 سنوات وأكثر من 100 عملية تطبيق، وبشهادات Odoo المعتمدة على الإصدارات Odoo v13 و v14 و v15 و v16 و v18 و v19، وقد قدّمت ميزات Odoo 19 الجديدة في مؤتمر Odoo Experience 2025 في بروكسل. أخبرني عن نظامك الحالي وسأقدّم لك صورة صادقة ومحدّدة النطاق لما ستتطلبه عملية الترحيل أو الترقية لديك فعلاً، دون أي مقابل.

احصل على تقييم مجاني لأعمالك