VtigerCRM OSSの導入・運用 | データ移行
VtigerCRMのCSVインポート実務ガイド。Excel・他社CRMから移行する4つの鉄則
Excelの顧客台帳をまとめたり、Salesforce・kintone・Zohoなどから乗り換えたりするとき、件数だけが合っていても、顧客担当者が別の企業にひも付いたり、営業担当が一律で実行者に変わったりすると、切替初日から現場が困ります。
本記事では、OSS版VtigerCRM 8.4.0の標準インポートを基準に、取り込み順・CSV整形・名寄せ・大量処理の4つを解説します。少量テストから本番切替まで、営業と情シスで確認すべきポイントもまとめました。
CSVを作る前に、移す範囲と項目の対応を決める
まず、移行元ごとに出力できるデータを一覧にします。顧客企業・担当者・案件に加え、活動、コメント、メール、添付、見積明細まで必要かを営業・サポート部門と決めます。履歴や添付、複数の関連先を持つデータは、標準CSVで再現できる範囲を確認し、必要に応じてAPIや専用ツールでの移行、旧システムの参照用保管を検討します。
- 原本を保管する。 抽出日時、移行元、件数を記録し、加工は複製で行います。個人情報を含むCSVと検証用データの保管先やアクセス権も決めます。
- 項目対応表を作る。 移行元の列名、移行先のモジュールと項目、必須・既定値、変換ルール、空欄の扱いを1行ずつ整理します。
- 旧IDを残す。 移行元のレコードIDと親IDを保存し、旧IDと新レコードの対応を追えるようにします。複数の移行元がある場合は、システム名や組織IDもキーに含めます。
| 移行元の列 | VtigerCRMの項目 | 変換・空欄時の扱い |
|---|---|---|
| 担当者ID | 旧担当者ID(カスタム項目) | 文字列で保持。空欄や重複があれば移行前に確認。 |
| 企業ID | 顧客企業(参照欄) | 企業対応表で照合し、移行先の参照形式に変換。 |
| 姓・名 | 姓・名 | それぞれマッピング。必須の姓が空欄なら要確認。 |
ウィザードでは、ファイルと文字コードの選択、重複処理、列のマッピングの順に確認します。マッピング画面に出るサンプル値で、列ずれと必須項目をチェックしてから実行します。
基本の画面操作を見る | VtigerCRMでデータをインポートする →鉄則 01
参照されるデータから取り込む
企業・担当者・案件を移す場合は、先に社内ユーザーを準備し、参照される企業から登録します。企業同士の親子関係や担当者間の参照がある場合も、参照先が登録されてから関連を付けます。
| 順序 | 対象 | 次の工程に進む前に確認すること |
|---|---|---|
| 01 準備 | 社内ユーザー・グループ | 有効なユーザーと割当権限を確認。旧担当者から新担当者への対応表を作る。 |
| 02 登録 | 顧客企業(Accounts) | 旧企業IDと新レコードの対応を確定。同名企業や支店の扱いも決める。 |
| 03 登録 | 顧客担当者(Contacts) | 正しい企業に関連付くことを、企業側の関連リストでも確認する。 |
| 04 登録 | 案件(Potentials)・後続データ | 企業・担当者との関連を確認。見積・受注などは案件や商品・サービス、明細の依存関係を確認して別工程で扱う。 |
旧IDで照合してから、参照列に変換する
たとえば、旧CRMで担当者の所属企業IDが ACC-0042 なら、対応表から新CRMの「株式会社山田商事」を特定します。標準CSVの参照欄に入れる値は、対象モジュールが照合する形式を確認して変換します。OSS版8.4.0の参照項目には Accounts::::株式会社山田商事 のようにモジュール名とレコード名を指定できる処理があります。実際の対象項目で確かめます。移行元のIDや自作の取引先コードをそのまま入れても、参照欄の照合キーとして使えるとは限りません。
参照先が0件、または複数件に当たる行は、別ファイルに分けます。 OSS版8.4.0の標準処理には、参照先が見つからないときに、権限などの条件に応じて関連レコードの作成を試みる経路があります。同名企業を名称で区別できない場合は、移行先IDに基づく関連付けを行える方法を選びます。
鉄則 02
インポート前にCSVを整える5つのポイント
1. 社名の表記ゆれは照合用の列で吸収する
「(株)山田商事」「㈱山田商事」「株式会社 山田商事」は、置換ルールで同じ候補に寄せられます。スペースや全角・半角の統一は照合用の列で行い、画面や帳票に使う正式な表記は別に管理します。社名が似ていても別法人の場合があるため、住所や取引先コードで裏付けます。
2. 姓・名を分け、表示順は画面で確認する
移行元から姓と名を別々に出せる場合は、それぞれを対応する項目へマッピングします。「山田 太郎」のように区切りが明確なデータは分割できます。スペースのない姓名や海外名は自動分割で決め打ちせず、確認対象に回します。取り込み後に一覧・詳細・メール差し込みで日本式の表示順も確認します。
3. 選択肢・日付・金額の形式を合わせる
「見積提出済」などの案件フェーズは、移行先で取り込む選択肢の値に変換します。表示ラベルと内部の値が異なる場合も、少量テストで確かめます。OSS版8.4.0では、モジュールによって未登録値が選択肢として追加される処理があるため、変換表にない値は本番CSVから分けます。
日付は実行ユーザーの日付形式に合わせます。たとえば yyyy-mm-dd なら 2026-11-01 です。日時のタイムゾーンや金額の小数点・桁区切り、必須項目の既定値もサンプルで確認します。
4. 旧担当者を新ユーザーやグループに対応させる
旧担当者IDから、移行先で使うユーザーやグループへの対応表を作ります。退職者の案件は引継ぎ先や部門で決めたグループに割り当て、元の担当者は必要に応じて履歴用の項目に残します。標準処理では担当先を解決できない場合、既定値や実行ユーザーへ割り当てられる場合があるので、実行権限と登録後の所有者を確認します。
5. UTF-8と区切り文字を確認し、先頭ゼロを守る
日本語CSVはUTF-8を使い、ウィザード側でもUTF-8と実際の区切り文字を選びます。ヘッダーありで取り込む場合は先頭行を項目名にします。Excelの「CSV UTF-8」で保存しても先頭列だけ自動対応しない場合は、BOMの有無を調べ、UTF-8のBOMなしで出力し直すか、マッピングを手動で確認します。
取引先コード、郵便番号、電話番号などはExcelに読み込む段階で文字列にします。保存後のCSVをテキストエディタで開き、先頭ゼロ、髙・﨑などの文字、カンマ・引用符・改行を含む備考欄が想定どおりかを確認します。
鉄則 03
名寄せは「1件に特定できるか」から判断する
同一企業を識別できる取引先コードや旧企業IDを優先します。13桁の法人番号は法人単位で照合する手掛かりになります。支店や営業所を別レコードで管理するなら拠点コードも必要です。担当者には旧担当者IDを優先し、メールアドレスを候補にする場合は共用アドレス・空欄・異動を確認します。重複判定で使える項目は、ウィザードで確認します。 国税庁「法人番号とは」
| 処理 | 適した場面 | 少量テストで確認すること |
|---|---|---|
| Skip スキップ | 既存を維持し、新規を追加する | 一致行がスキップされ、新規行が追加されること。 |
| Overwrite 上書き | 移行元を正として、対象項目を更新する | マッピング済みの空欄や既定値で、既存の値が消えたり変わったりしないか。 |
| Merge 統合 | 一致先を1件に絞り、値がある項目を反映する | 空欄・数値の0・既定値・関連先が期待どおりになるか。 |
Mergeは原則として空欄を除いて更新しますが、既定値が入る処理もあります。さらにOSS版8.4.0では、OverwriteやMergeで複数の既存レコードに一致した場合、実行ユーザーに削除権限があると、重複レコードの関連を移して削除する処理があります。照合先が複数ある行は、事前に人が確認してから取り込みます。
標準ウィザードの操作はインポート機能の活用編で確認できます。
鉄則 04
大量CSVは、予約処理と分割単位を先に確認する
1,000件はOSS版8.4.0の標準設定での目安
OSS版8.4.0の標準Importでは、modules/Import/models/Config.php の immediateImportLimit が1,000です。実際に読み込んだレコード数がこの値を超えると予約処理に回ります。環境ごとの設定を確認し、管理画面のスケジューラーで Scheduled Import が有効か、サーバー側のVtigerCRM定期処理が動き、キューが消化されるかを検証します。 VtigerCRM OSS 8.4.0配布ソース
止まった場所から調べる
| 症状 | 最初に確認する場所 | 次に行うこと |
|---|---|---|
| ファイルを送れない | Webサーバーやプロキシの制限、PHPの upload_max_filesize・post_max_size、CRMの upload_maxsize | 実行環境に適用される値を確認し、必要なら分割する。 |
| 予約のまま進まない | Scheduled Import、サーバーのcron、CLI PHPのログ | 最終実行時刻と、予約した処理の開始・完了を確認する。 |
| 途中で止まる・一部が失敗する | Web/CLI PHPの max_execution_time・memory_limit、エラーログ、項目の型・長さ | 成功済みの行を照合し、原因を直した失敗行だけを再処理する。 |
まず代表的な数十件を試し、次に実データの一部で処理時間・負荷・エラーの出方を測ります。その結果を使い、ファイルの行数を決めます。上限を変更する場合はWebとCLIの適用値を分けて確認し、変更前の値と作業後の復旧手順を記録します。 PHP公式の設定一覧
本番切替は、件数と関連付けの両方で判定する
- 検証する。 本番と同じバージョン・設定の環境で、新規・重複・空欄・同名・担当者不明・長文・複数行の備考を試します。更新時に通知やワークフロー、外部連携が動くかも確認します。
- 切替時点を決める。 旧システムの入力を止める時間、または差分抽出の基準時点を決め、移行先のDB・添付・設定をバックアップします。開始前に復元手順と切戻しの判断者を確認します。
- 投入と照合を記録する。 ファイル名、対象モジュール、処理時刻、追加・更新・スキップ・エラーの件数をバッチ単位で残します。画面で旧IDをたどり、企業・担当者・案件の関連、担当者別の件数、代表案件の金額や明細を照合します。
- 合格条件を満たして公開する。 参照先が未確定の件数や金額の差分を記録し、許容範囲を超えたら後続の投入を止めます。更新や統合も含む切戻しは、事前に検証した復元手順に沿って判断します。ウィザードの取り消しでどの操作まで戻るかも検証時に確認しておきます。
VtigerCRMのバックアップと復元 / 情シス向けセキュリティチェックリスト
切替判定の例 必須の関連付けが未解決のレコードは0件。例外として保留したデータは、件数・理由・担当者を記録します。対象期間の案件金額は、除外分を反映した移行元の集計と照合します。
単純なCSV取り込みと、関連を保つ移行を分けて見積もる
顧客マスターだけの移行と、企業・担当者・案件・活動履歴・添付までつながりを保つ移行では、準備も検証も変わります。vtplusでは、移行元の出力方法やデータ構造を確認したうえで、単純な取り込みと関連を維持する移行を分けて、作業範囲と費用を提示します。日本仕様の項目・画面や、移行後に使いたい業務支援アプリ・AI活用も合わせて相談できます。 vtplusの料金・導入支援
移行費と稼働後の費用を分けて検討する際は100名・5年間のTCO比較へ。履歴を残す目的を営業部門と話すときは、商談要約やメール下書きを例にした生成AIの4つの営業活用例もご覧ください。
vtplus | データ移行・初期構築
Excel・他社CRMからのデータ移行を相談する
現在のシステム、顧客・担当者・案件のおおよその件数、残したい履歴や添付、切替希望時期をお知らせください。匿名化したサンプルや項目一覧から、標準CSVで進められる範囲と、関連を保つために個別の移行設計が必要な範囲を整理します。