[Sugar_dev]SugarCRM7.6へのアップグレードにハマったのでメモ

[概要]

1.事前にアップグレードウィザード自体のアップグレードが必要

2.ドロップダウンのキーに制限がかかる(→回避方法)

———

1.事前にアップグレードウィザード自体のアップグレードが必要

6月も下旬に差しかかろうとしていたある日のこと。
SugarCRMのサポートサイト(https://store.sugarcrm.com/download)に、バージョン7.6へのアップグレードパッチが公開されていたので、早速DLしてアップグレードを試みたところ、Pre-upgradeの段階でfailedするという事態に。


調べたところ、どうやらアップグレードウィザード自体をアップグレードする必要があるらしい。
SugarCRMのサポートサイトを確認したところ、確かにそれらしいパッチが公開されていた。


これはアップグレードウィザードからインストール。


この状態でアップグレードウィザード画面を再度確認すると、アップグレードウィザード自体のバージョン情報が載っていることが確認出来る。

———

2.ドロップダウンのキーに制限がかかる(→回避方法)

さて、ようやく改めてアップグレードを実行、と思いきや。
アップグレード前に「Sugar Health Check」なる処理が走るようになっている。
ここで何かしらの項目に引っかかってしまうと、アップグレード処理が継続できない仕組みとなっている。
今回、「Bad vardefs – multienum」という警告メッセージが表示され、処理が中断させられてしまった。
メッセージをよく見ると、ドロップダウンのキーに「-(ハイフン)」を含む項目が存在する、という理由で引っかかってしまったようだ。
(参考:http://support.sugarcrm.com/04_Knowledge_Base/02Administration/100Install/Troubleshooting_Health_Check_Output/Health_Check_Error_Bad_Vardefs_Multienum/
サポートページでの記述では、ドロップダウンのキーに含まれる「-,&,/」のような文字列はドロップダウンの定義、及びDBから削除するよう記載がある。
しかし、ドロップダウンに既に大量にこれらのキーが存在するようなとき、変更しようとすると膨大な手間がかかる。

試しに、SugarCRMの7.6環境を新規に構築し、本当にハイフンを含むドロップダウンキーが使えなくなっているのかを調査した。
まず、ドロップダウン定義画面では入力チェックが実装されており、新規にハイフンを含むキーを持つドロップダウン要素は作成出来なかった。


しかし、言語定義ファイル(ja_JP.lang.php)に、ハイフンを含むドロップダウンキーを持つドロップダウン定義を直接追加した場合は、ドロップダウン定義画面にて今まで通りドロップダウン要素として扱われていた。




さらに、そうして定義したドロップダウンを用いるフィールドを用意し、各モジュールの編集画面でどのドロップダウン要素を選択した状態で保存処理を実施したとき、DBに対してはドロップダウンのキーの値がそのまま保存されることを確認。


これらから、「Sugar Health Checkさえパスしてしまえば今まで通りの運用が可能なのでは」と考え、 Health Checkにて該当するチェックを実施している箇所がどこに記述されているかを追うことにした。

結果、次の手順でSugar Health Checkの「Bad vardefs – multienum」の警告をスルーしてアップグレード処理を続行できることがわかった。
a) アップグレードパッケージ「SugarPro-Upgrade-7.5.x-to-7.6.0.0.zip」を解凍
b) 解凍したファイル群にある「HealthCheck/Scanner/Scanner.php」を開く
c)2369行目付近の、次の行をコメントアウトして保存する
$this->updateStatus("badVardefsMultienum", $value['name'], $value['options'], $result, $module);
d)編集したファイルを含めて、一度解凍したアップグレードパッケージを再圧縮する
e)再圧縮したアップグレードパッケージを、アップグレードウィザードにてアップロードして処理を実施する。

上記の手順により、ドロップダウン定義に一切変更を加えることなく、SugarCRMのアップグレードが可能となる。

Filed under: 開発部ブログ