Фаза 3 з 9
Data Migration — підготовка і перенесення даних
Перенести master data і opening balances з 1С/BAS у новий Odoo без втрат і помилок. Це шов між старим і новим.
Передумови
- Підписана design specification (фаза 2)
- Бекап старої системи (1С/BAS) на дату cutover-1
- Очищений і узгоджений chart of accounts в Odoo
- Призначений data steward з боку клієнта (типово — головбух)
Покрокові завдання 22
- Extract партнерів з 1С/BAS — повний дамп з усіма реквізитами
ЄДРПОУ, ІПН, юр. адреса, банк-реквізити, контактні особи.
- Очищення партнерів: пошук дублікатів за ЄДРПОУ та ІПН
У 1С часто 2-3 картки на одного контрагента. Зливати — і фіксувати, який старий ID веде на новий.
- Перевірка ЄДРПОУ через API ДПС (відкритий реєстр)
Виявити контрагентів-банкрутів, припинених, у списку санкцій.
- Extract продуктів і номенклатури з 1С/BAS
- Очищення продуктів: дублікати, неактуальні SKU, неконсистентна одиниця виміру
- Мапінг номенклатури на коди УКТ ЗЕД (для експорту і деяких ПН)
- Підготовка XLSX-шаблонів для імпорту в Odoo (партнери, продукти, BoMs)
- Імпорт партнерів у Odoo, валідація обов'язкових полів
- Імпорт продуктів у Odoo з категоріями і одиницями виміру
- Імпорт BoMs (топ-20 SKU з фази Design)
- Дзеркалювання залишків ТМЦ на дату cutover (за складами і номенклатурою)
Найкритичніший момент. Залишки в Odoo мають збігтися з trial balance 1С до копійки.
- Розрахунок собівартості залишків — середньозважена або FIFO
- Opening balance journal entry — головна проводка
Усі рахунки одночасно: 361 (Дт) = 631 (Кт) у балансі, плюс 311, 641, 201-26, капітал.
- Імпорт відкритих ПН (отримані від постачальників, ще не зачитані)
- Імпорт виданих ПН і РК (виставлених у попередніх періодах, не закритих)
- Імпорт історії заборгованостей 361 і 631 (з датами виникнення)
Старі борги — окремо. Потрібно для строків позовної давності і резерву сумнівних боргів.
- Імпорт основних засобів і нарахованої амортизації
- Defense: імпорт військових частин (А-номери, польова пошта, реквізити)
- Defense: імпорт історії оборонних контрактів (ID, ЦО, статус)
- Перевірка trial balance Odoo проти trial balance 1С на дату cutover
Допустима різниця — 0 копійок. Все інше — копати, де помилка.
- Reconciliation report за ключовими рахунками з підписом головбуха
- Документація ETL-скриптів для повторюваного запуску у cutover
У cutover ці скрипти запустяться ще раз з фінальними даними. Мають бути ідемпотентні.
Контекст: чому ця фаза критична
Міграція даних — це не «технічна задача розробника». Це юридична операція: вхідне сальдо нової системи має точно відповідати вихідному старої, інакше перша ж декларація з ПДВ не зійдеться, а податкова отримає привід для перевірки. Якщо trial balance у Odoo відрізняється від 1С хоч на одну копійку — копати треба, поки не знайдете причину.
Тиждень 1: extract і очищення
Це найдовша і найнудніша частина. Бухгалтер сидить з виписками і чистить. Без терпіння тут — пізніше будуть дубльовані контрагенти, з якими сальдо ніколи не зійдеться.
Тиждень 2: imports і opening balances
Імпорти у тестовий Odoo. Звірка trial balance. Якщо щось не зійшлося — берете проблемний рахунок і копаєте його окремо. Найчастіше причина — у валютних курсах на cutover-дату або в неправильному маппінгу субрахунків.
Тиждень 3: документація і signoff
ETL-скрипти треба зберегти і задокументувати — у cutover вони запустяться ще раз з фінальними даними станом на h-0. Reconciliation report — це юридичний документ, його підписує головбух.
Пастка: не довіряйте «середній собівартості» з 1С. Часто там вона порахована криво, і під час міграції в Odoo вилазять «привидні» нестачі. Перерахуйте середньозважену вручну на топ-50 SKU.
Пастка: не імпортуйте всю історію документів. Імпортуйте тільки залишки і відкриті позиції. Архів старих документів живе в 1С — туди й звертайтеся за потреби.
Результати фази (deliverables)
- Cleansed master data (партнери, продукти, склади)
- ETL-скрипти для повторного запуску
- Opening balance journal entry — звірений з trial balance старої системи
- Reconciliation report за рахунками 361, 631, 311, 641, 201-26
- Список відкритих ПН і РК на дату cutover