تخطّي إلى المحتوى الرئيسي
ERP والأتمتةبقلم8 دقائق قراءةآخر تحديث:

الترقية التي ترثها ليست الترقية التي في دليل المورّد

ملخص تنفيذي

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

اقرأه قبل أن تنقله

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

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

وأكتب النتائج قائمةَ عبارات يستطيع المسؤول في الأعمال أن يوافق عليها أو يخالفها، لا جردًا تقنيًا. تُعتمد عروض الأسعار خارج النظام ثم تُدخل بعد ذلك. وثلاث جهات تتشارك في دليل الحسابات ورابعة لا تشاركها فيه. ولم يُقفل أحد فترة في هذه الوحدة منذ العام الماضي. كل واحدة من هذه العبارات جملة سيتفاعل معها أحدهم في الأعمال فورًا، وتفاعله يخبرني عن النطاق أكثر مما يخبرني أسبوع آخر من قراءة الشيفرة.

وحصيلة الأسبوعين ليست خطةً، بل وصفًا متفقًا عليه للحاضر، يوقّعه من سيعيشون المستقبل. ولم أندم قط على إنفاق هذين الأسبوعين، وندمت على تخطّيهما.

الإعداد والتخصيص خطران مختلفان

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

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

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

وعندها يصير التقدير واضحًا بطريقة يتابعها مدير المالية، لأن العمودين يتصرفان تصرفًا مختلفًا تحت الضغط. فعمل الإعداد ينضغط إن أضفت أشخاصًا. أما عمل التخصيص فلا ينضغط إلا بحذف بعضه، والحذف يحتاج قرارًا من الأعمال لا جهدًا من الفريق. وقول هذه الجملة في الأسبوع الأول هو ما يمنع أن يُسأل المشروع في الشهر الثاني: لماذا لم يُسرِّعه مزيد من المطوّرين؟

نصف ما تخشى كسره ميّت أصلًا

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

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

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

وفي المجموعة القابضة كان هذا التمرين هو ما جعل الأشهر الثلاثة ممكنة. فالقفزة بين الإصدارين في سبع جهات صارت قابلة للتنفيذ لأن نصيبًا معتبرًا مما كتبته فرق سابقة لم يعد يحتاج إلى الانتقال، ولأن كل حذف كان قرارًا وقّعته الأعمال لا اختصارًا اتخذه فريق التقنية. وهذا الفرق يظهر أثره لاحقًا، حين يُفقد شيء ويصير السؤال: من قرّر؟

ترحيل البيانات هو المشروع

تبني الفرق خطة الترقية على البرمجية ثم تكتشف البيانات في الأسبوعين الأخيرين. والصواب عكس ذلك. فالبرمجية ستنتقل، وقد اختبر المورّد ذلك المسار في آلاف عمليات التثبيت. أما بياناتك فلم يختبرها أحد، لأنه ليس لمجموعة أخرى تاريخك أنت من كيانات مدموجة، وأرصدة افتتاحية مصحَّحة، وفترة أعاد أحدهم فتحها في 2022 ولم تُقفل بعدها.

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

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

ويجب أن يكون التمرين الأخير قبل الإطلاق مملًّا. فإن لم يكن مملًّا فالجواب أن تُجري تمرينًا آخر، لا أن تُطلق وتُصلح لاحقًا. ولم أرَ الإصلاح اللاحق أرخص قط في نظام مالي، لأن الأخطاء لا تبقى في النظام، بل تخرج منه داخل أرقام تصرّف الناس بناءً عليها.

لماذا ربع سنة، وما ثمن الربع

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

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

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

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

ما أقوله لك قبل أن تقبل المهمة

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

واسأل كيف كانت الإقفالات الشهرية الثلاثة الأخيرة. ففريق مالية يُقفل في وقته يخبرك أن البيانات في حال أفضل من الشيفرة، وفريق يُقفل متأخرًا بتسويات يدوية يخبرك أين سيؤلم الترحيل فعلًا. وهذه الإجابة تغيّر خطتي أكثر من أي اكتشاف تقني.

واسأل من يملك اعتماد الحذف. فإن كان الجواب «لا أحد» أو «لجنة تجتمع شهريًا»، وجب أن يستوعب الجدول ذلك، ويحسن أن تُسعّره قبل أن تلتزم لا أن تكتشفه في الأسبوع الخامس. وهذا هو السؤال الذي ينساه الناس، وهو أكثر الأسئلة حسمًا في معرفة هل التاريخ حقيقي أم لا.

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

قائمة تحقق عملية

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

أخطاء شائعة

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

كيف يتعامل حمد مع هذا الملف

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

وأدير عملًا استشاريًا مستقلًا في Odoo وأتمتة الأعمال، وقد جعلني ذلك أكثر تحفظًا لا أقل. فالأنظمة التي تصمد مع الزمن هي التي يستطيع فيها أحد بعد ثلاث سنوات أن يشرح لماذا وُضع كل تجاوز، لذلك أفضّل أن أكتب أقل قدر من التجاوزات وأن أدوّن السبب.

ولا أعد بأن تكون الترقية الموروثة سريعة. أعد بأنك خلال أسبوعين ستعرف ما الذي تحمله، وكم يكلّفك، وأي أجزائه لم يحتجها أحد منذ غادر من كتبها.

مواصلة الحوار

اطّلع على الملف التنفيذي وفلسفة التشغيل، وتواصل مباشرة لمناقشة الاستشارات أو مشاريع التحوّل.

العودة إلى الرؤى

ERP والأتمتة4 دقائق قراءة

تنفيذ Odoo 18 ليس مشروع ERP بل مشروع حوكمة

لماذا تنهار برامج تخطيط موارد المؤسسات (ERP) حين تغيب الملكية وانضباط الصلاحيات وصدق سير العمل وإدارة التغيير، وكيف تدير Odoo 18 كبرنامج تشغيل لا كعملية تثبيت برمجية.

قراءة