Оновлення безкоштовної версії SugarCRM - ручний метод - Ваш довідник CRM
Постановка задачі
Цього разу торкнемося такої важливої та потрібної процедури, як оновлення SugarCRM до вищої версії. SugarCRM досить швидко розвивається, часто виходять нові версії. Ця CRM-система стає все більш зручною та стабільною. Оскільки CRM-система - це в першу чергу робочий інструмент, що допомагає нам у роботі, то звичайно ж хочеться щоб цей інструмент був максимально зручним, надійним і сучасним. Компанія SugarCRM йде на зустріч цим бажанням і дбає про реалізацію оновлення їх CRM-системи. Вся логіка роботи з модулями в SugarCRM заснована на тому, що є вихідна базова частина системи, яка практично не піддається подальшим змінам та налаштуванням. А є розділ custom, в якому можна вносити всі необхідні доробки модулів. Також SugarCRM надає інтерфейс оновлення версії SugarCRM на новішу. При завантаженні патча з новою версією змін піддається лише базова частина CRM-системи. Всі доробки, що знаходяться в custom, залишаються без змін. Тим самим забезпечується коректний переклад SugarCRM з версії до версії зі збереженням усіх ваших напрацювань.
Для більшого розуміння суті того, що відбувається, я коротко розповім як відбувається оновлення SugarCRM на більш старшу версію:
- Патч оновлення містить файли, які потрібно замінити в старій CRM-системі
- Файли з патчаповністюзатирають собою файли в CRM-системі
- Всі файли, які були донесені до старої CRM-системи після її встановлення - їх оновлення не торкається і вони залишаються незмінними
І вихід тут один: оновлювати CRM-систему "вручну". У цьому випадку зберігаються всі доробки, які були зроблені на старій CRM-системі. Вони коректно переносяться на нову CRM-систему та зберігають свою функціональність.
Реалізація
Оновити CRM-систему "вручну" - це дійсно означає "вручну". Тобто. стандартний інтерфейс SugarCRM нам не підходить, і ми всі зміни в CRM-системі робити ручками. Але щоб сильно не лякатися, відразу скажу, що нам у цій справі дуже допоможе програма Araxis Merge, призначення якої знаходити відмінності в папках і файлах.
Ідея ручного оновлення SugarCRM на нову версію полягає в наступному У нас має бути три папки з трьома CRM-системами:
- - У першій папці має бути встановлена чиста CRM-система нашої поточної старої версії. Тобто. знаходимо вихідний SugarCRM, з якого ми ставили нашу поточну версію, і встановлюємо цю версію в цю першу папку. Після встановлення не забуваємо її русифікувати.
- - У другій папці має лежати наша поточна CRM-система. Подбайте про те, щоб з неї були видалені всі непотрібні складові типу каталогів з SVN-даними і т.д. Якщо ви не знаєте, що потрібно прибрати, то нічого й не забирайте.
- - І, нарешті, до третьої папки необхідно встановити SugarCRM тієї версії, на яку ми хочемо перейти.
Наше завдання – відстежити, які зміни ми внесли до нашої поточної CRM-системи, і коректно перенести їх у нову CRM-систему.
З завданням пошуку та коректного перенесення змін чудово справляється Araxis Merge (або його безкоштовний аналог Meld для Unix-систем). Знаходимо, качаємо і встановлюємо демо-версію цієї програми.
Araxis Merge дозволяє порівнювати два чи три каталоги між собою. При цьому відзначаються директорії та
Як я вже писав вище, для переходу на нову версію нам знадобляться 3 папки з уже інстальованими версіями SugarCRM. Ув нашому випадку це будуть:
- crm630 – тут встановлена чиста порожня версія SugarCRM CE 6.3.0 (на движку якої зараз працює наша CRM-система);
- crm_current - тут знаходяться файли нашої поточної CRM системи, що працює на движку SugarCRM CE 6.3.0. Всі наші напрацювання звідси треба буде перенести на нову версію SugarCRM;
- crm642 - тут встановлено чисту пусту версію SugarCRM 6.4.2, на яку нам і треба виконати перехід;
Як встановлюється SugarCRM, описано в іншій статті, і ми цього торкатися не будемо. Просто приймемо за інформацію, що потрібні нам для переходу системи SugarCRM CE 6.3.0 та SugarCRM CE 6.4.2 вже встановлені, русифіковані та справно працюють.
Запускаємо Araxis Merge, відкриваємо режим порівняння трьох папок та вказуємо у трьох вікнах папки з нашими проектами у наступному порядку:
- 1 - папка з порожньою вихідною CRM-системою crm630 ;
- 2 - папка з нашою поточною CRM-системоюcrm_current;
- 3 - папка з CRM-системою, яку ми хочемо перейтиcrm642.

Після запуску порівняння папок, через деякий час Araxis Merge показує нам список папок і файлів у наших трьох проектах. Тепер наше основне завдання: перенести все те, що було додано до нашої поточної CRM-системи щодо чистої старої CRM-системи в нову CRM-систему.
Як це зробити? Дуже просто! Ми шукаємо все те, чим відрізняються папкиcrm630таcrm_current, і переносимо знайдене в папкуcrm642!
У нашому прикладі на картинці видно, що в проектіcrm_currentу папціcustom, щодо проектуcrm630, з'явилася папка з файламиapplication( та й купа інших папок). Клацаємо правою клавішею миші напапціapplicationу центральному вікні, і вибираємо пункт контекстного меню "Copy Selected From Second to Third Folder . " (що означає: Копіювати виділене з другої до третьої папки). Тобто. фактично, скопіювати наші напрацювання, які ми додали у поточному проекті, у нову CRM-систему.
Після завершення копіювання Araxis Merge покаже, що тепер проектиcrm630іcrm_currentвсе також відрізняються за набором папок і файлів, а осьcrm_currentтаcrm642- ідентичні (за вмістом папкиapplication):

Таким чином ми "пробігаємося" за нашим поточним проектом, і переносимо в нову версію CRM-системи всі папки та файли, які булидоданів поточній версії CRM-системи.


На даному етапі перенесення коду нам має бути абсолютно не різниці, що за код ми переносимо. Я раджу не починати копатися у своїй пам'яті, намагаючись згадати, що це за код, і для чого він сюди був написаний. Якщо написано, значить потрібен. Аналіз ви зможете провести вже потім, коли все переїде на нову CRM-систему. А інакше оновлення CRM-системи може навіть затягнутися. Головне: щоб перенесення відбувалося правильно з погляду синтаксису PHP, і не відбувалося явних помилок (іноді, в рідкісних складних випадках, Araxis Merge все ж таки може трохи плутатися, і пропонувати не зовсім коректні варіанти перенесення коду).
Після перенесення всіх потрібних ділянок коду ми зберігаємо нову відредаговану версію файлу, виходимо назад до дерева каталогів і папок, і шукаємо наступний файл для порівняння та аналізу.
І ось таким чином "пробігаємося" по всьому проекту. Робота нудна, подекуди копітка. Але ефект, що отримується на виході, дуже приємний: у нас виходить проект з новою версією SugarCRM,в якому присутні всі наші фічі та налаштування!
Але це ще не все! Все, що було у файлах, ми перенесли. Але ще залишається база даних. При переході на нову версію SugarCRM треба вирішити щонайменше два питання, пов'язані з базою даних:
- 1 - Що робити, якщо структура бази даних у новій CRM-системі відрізняється від структури бази даних у старій CRM-системі?
- 2 - Що робити з даними, які знаходяться у старій CRM-системі? Як їх перенести у нову?
Щоб вирішити ці два питання ми надійдемо так: у файлі конфігурації нової CRM-системи config.php в налаштуваннях доступу до бази даних ми вкажемо нашу поточну базу даних. Так, і саме поточна, з якою ми хочемо піти на нову версію. Таким чином, ми вирішуємо другу проблему: наші дані, що знаходяться в поточній версії, залишаються в новій версії CRM-системи. Але тут постає гостро питання зі структурою бази даних: вона ж стара! Так, хай дуже схожа, але стара! А тут нам прийде на допомогу один із інструментів SugarCRM: Швидке відновлення. "Кривізна" бази даних не повинна перешкоджати використанню цього інструменту. Єдине, сама SugarCRM стежить за тим, щоб їй не була "підсунута" не її база даних. Про що вона нас і проінформує при спробі в неї зайти рядком "Sugar CRM 6.4.2. Лікується це досить просто: заходимо в таблицю config, знаходимо параметр sugar_version і правимо його значення на назву нашої нової версії.
На цьому перехід на нову версію SugarCRM можна вважати виконаним.
У цій статті я намагався описати основну ідею ручного оновлення SugarCRM до останніх версій. Звичайно, у кожному конкретному випадку можуть існувати свої особливості переходу і даних, зазначениху статті може бути недостатньо. Але, маючи в арсеналі Araxis Merge, можна значно спростити вирішення будь-яких завдань щодо оновлення версій SugarCRM.
З першого разу запропонований метод може здатися досить трудомістким (звичайно ж завантажити файл і натиснути кнопку "Старт" набагато швидше), але він є найбільш надійним для коректного оновлення CRM-системи. А з досвідом проведення подібних робіт збільшується їхня швидкість. Якщо раніше на перехід з версії у версію витрачав пару днів, то зараз будь-яку незнайому систему можу оновити за кілька годин (а то й швидше, залежно від кількості доопрацювань цієї системи).
А якщо програміст приймає обслуговування CRM-систему, розробка якої велася іншим програмістом, то важко знайти найкращий спосіб зрозуміти масштаб робіт попереднього програміста, де він встиг побувати і чого змінити :)
А зараз, якщо у Вас коштуватиме завдання оновлення Вашої CRM-системи на найновішу стабільну версію SugarCRM, і при цьому Ви хочете зберегти і свою клієнтську базу, і напрацьований функціонал, і час, і нерви, і гроші, то Ви можете зв'язатися з нами . Ми зробимо все якісно, швидко та не дорого. Як зв'язатися з нами і трохи про нашу компанію є на цій сторінці.