VtigerCRM OSSの導入・運用 | データ移行

VtigerCRMのCSVインポート実務ガイド。Excel・他社CRMから移行する4つの鉄則

Excelの顧客台帳をまとめたり、Salesforce・kintone・Zohoなどから乗り換えたりするとき、件数だけが合っていても、顧客担当者が別の企業にひも付いたり、営業担当が一律で実行者に変わったりすると、切替初日から現場が困ります。

本記事では、OSS版VtigerCRM 8.4.0の標準インポートを基準に、取り込み順・CSV整形・名寄せ・大量処理の4つを解説します。少量テストから本番切替まで、営業と情シスで確認すべきポイントもまとめました。

対象 OSS版VtigerCRM 8.4.0 / 株式会社アイプランナー

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. 姓・名を分け、表示順は画面で確認する

移行元から姓と名を別々に出せる場合は、それぞれを対応する項目へマッピングします。「山田 太郎」のように区切りが明確なデータは分割できます。スペースのない姓名や海外名は自動分割で決め打ちせず、確認対象に回します。取り込み後に一覧・詳細・メール差し込みで日本式の表示順も確認します。

姓名表示順の調整方法 / 日本の営業に合わせる5つの設定

3. 選択肢・日付・金額の形式を合わせる

「見積提出済」などの案件フェーズは、移行先で取り込む選択肢の値に変換します。表示ラベルと内部の値が異なる場合も、少量テストで確かめます。OSS版8.4.0では、モジュールによって未登録値が選択肢として追加される処理があるため、変換表にない値は本番CSVから分けます。

日付は実行ユーザーの日付形式に合わせます。たとえば yyyy-mm-dd なら 2026-11-01 です。日時のタイムゾーンや金額の小数点・桁区切り、必須項目の既定値もサンプルで確認します。

項目の属性・UIタイプのリファレンス / カスタム項目の追加とDB上限

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を優先し、メールアドレスを候補にする場合は共用アドレス・空欄・異動を確認します。重複判定で使える項目は、ウィザードで確認します。 国税庁「法人番号とは」

重複を検出した場合の3つの処理
処理適した場面少量テストで確認すること
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公式の設定一覧

本番切替は、件数と関連付けの両方で判定する

  1. 検証する。 本番と同じバージョン・設定の環境で、新規・重複・空欄・同名・担当者不明・長文・複数行の備考を試します。更新時に通知やワークフロー、外部連携が動くかも確認します。
  2. 切替時点を決める。 旧システムの入力を止める時間、または差分抽出の基準時点を決め、移行先のDB・添付・設定をバックアップします。開始前に復元手順と切戻しの判断者を確認します。
  3. 投入と照合を記録する。 ファイル名、対象モジュール、処理時刻、追加・更新・スキップ・エラーの件数をバッチ単位で残します。画面で旧IDをたどり、企業・担当者・案件の関連、担当者別の件数、代表案件の金額や明細を照合します。
  4. 合格条件を満たして公開する。 参照先が未確定の件数や金額の差分を記録し、許容範囲を超えたら後続の投入を止めます。更新や統合も含む切戻しは、事前に検証した復元手順に沿って判断します。ウィザードの取り消しでどの操作まで戻るかも検証時に確認しておきます。

VtigerCRMのバックアップと復元 / 情シス向けセキュリティチェックリスト

切替判定の例 必須の関連付けが未解決のレコードは0件。例外として保留したデータは、件数・理由・担当者を記録します。対象期間の案件金額は、除外分を反映した移行元の集計と照合します。

単純なCSV取り込みと、関連を保つ移行を分けて見積もる

顧客マスターだけの移行と、企業・担当者・案件・活動履歴・添付までつながりを保つ移行では、準備も検証も変わります。vtplusでは、移行元の出力方法やデータ構造を確認したうえで、単純な取り込みと関連を維持する移行を分けて、作業範囲と費用を提示します。日本仕様の項目・画面や、移行後に使いたい業務支援アプリ・AI活用も合わせて相談できます。 vtplusの料金・導入支援

移行費と稼働後の費用を分けて検討する際は100名・5年間のTCO比較へ。履歴を残す目的を営業部門と話すときは、商談要約やメール下書きを例にした生成AIの4つの営業活用例もご覧ください。

vtplus | データ移行・初期構築

Excel・他社CRMからのデータ移行を相談する

現在のシステム、顧客・担当者・案件のおおよその件数、残したい履歴や添付、切替希望時期をお知らせください。匿名化したサンプルや項目一覧から、標準CSVで進められる範囲と、関連を保つために個別の移行設計が必要な範囲を整理します。