CRM でのデータロード
データをデータモデルにロードする作業は、他のアプリケーションへのデータロードと同様です。親オブジェクトは子オブジェクトより前にロードする必要があります。また、検索オブジェクトは参照元のオブジェクトより先にロードする必要があります。データモデルにデータをロードする場合の主要なオブジェクト関係および前提条件は以下の通りです:
アカウントは住所の親です。アカウントが最初にロードされ、次に住所がロードされます。住所は外部 ID またはアカウント ID の 2 つの値のいずれかを使用してアカウントを参照します。
アカウントは関係を使用して他のアカウントに関連付けられます。他のアカウントに対して関係を持つすべてのアカウントは、関係オブジェクトのロード前にロードする必要があります。関係は「To」アカウント ID、「From」アカウント ID およびロールを使用して 2 つのアカウントをリンクさせます。
Veeva データモデルでは、アカウントと住所のレコードタイプが使用されます。データをロードする際にアカウントまたは住所にレコードタイプを割り当てる方法は二つあります:
- データローダでデフォルトレコードタイプを使用できるようにする。各 SFDC プロファイルにはアカウントおよび住所オブジェクトのデフォルトレコードタイプがあります。RecordTypeID がロードの一部に含まれない場合、新しくロードされたレコードはデフォルトのレコードタイプを使用して作成されます。
- ロードで RecordTypeID を指定する。データロードに病院やプロフェッショナルなど複数のオブジェクトタイプが含まれる場合、プロファイルのデフォルトレコードタイプが割り当てられないようにするため、ロード処理でレコードタイプを指定する必要があります。
子アカウントレコードは、アカウント階層におけるアカウント間の階層関係を表します。これらは親アカウントと子アカウントのルックアップで設定されます。最初にアカウントのデータロードしてから、階層に従って子アカウントをマッピングする必要があります。さらに、アカウントをロードする際に、Primary_Parent_vod フィールドにアカウントの主たる親を指定してください。続いてロードする子アカウントレコードでは、アカウントのそのフィールドに基づいて主たる親が自動的に特定されます。
製品は、親製品 ID を使用して別の製品に関連付けることもできます。製品階層をロードする場合は、最初に親製品をロードしてから子製品をロードする必要があります。最初に親オブジェクトを使用して入力内容をソートしてから、ロードバッチサイズを 1 以下にしてすべての製品を順次ロードする方法もあります。
処方データロードは、処方製品、ベネフィット設計、ベネフィット設計ラインの 3 つのオブジェクトで設定されます。ベネフィット設計はベネフィット設計ラインの親で、ベネフィット設計ラインはルックアップ参照を使用して処方製品を参照します。ベネフィット設計ラインは他の 2 つのオブジェクトに関連するため、これらは最後にロードする必要があります。ベネフィット設計ラインには 2 つのルックアップを含める必要があります:ベネフィット設計オブジェクトの外部 ID または SFDC ID および処方製品オブジェクトの外部 ID または SFDC ID です。
コールデータロードは 6 つのオブジェクトで構成されます。コール (Call2_vod)、ディテール (Call2_Detail_vod)、コールキーメッセージ (Call2_Key_Message_vod)、コールディスカッション (Call2_Discussion_vod)、サンプル (Call2_Sample_vod)、およびコール経費 (Call2_Expense_vod) です。コールオブジェクトは、その他のすべてのコールオブジェクトの親オブジェクトです。Call2 データモデルの重要な考慮事項は、グループコールのすべての被験者が個別のコールとして扱われる点です。各被験者はコールヘッダーと、ディテール、メッセージ、ディスカッション、サンプルおよび費用の子オブジェクトを持ちます。被験者コールレコードは Parent Call2_vod レコードのルックアップとして機能する Call2_vod オブジェクトの Parent_Call_vod フィールドを使用して親コールレコードに関連付けられます。
さらに Call2_Detail_vod レコードおよび Call2_Key_Message_vod レコードを作成する際に役立つ 2 つのフィールドが Call2_vod オブジェクトに追加されます。上記のフィールド定義で説明したように、Call2_vod オブジェクトの Add_Detail_vod フィールドは、Call2_vod 親レコードに子 Call2_Detail_vod レコードを作成します。同様に、Call2_vod オブジェクトの Add_Key_Message_vod フィールドは、Call2_vod 親レコードに子 Call2_Key_Message_vod レコードを作成します。
Add_Key_Message_vod フィールドがデータロードによって入力された場合、既存のコールキーメッセージは削除され、Add_Key_Message_vod フィールドにリストされているコールキーメッセージで上書きされます。
データのロード処理の全体的な流れは以下のようになります:
- すべての親コールの Call2_vod レコードをロードします。
- Add_Key_Message_vod フィールドの使用は任意です
- Add_Detail_vod フィールドの使用は任意です
- ステータスが「Saved_vod」に相当するすべての Call2_vod レコードをロードします
- Address_vod フィールドにはコールの住所をテキストで保存できます
- PDMA サンプルをロードする場合は、以下のことを考慮する必要があります:
提供サンプルトランザクションを作成しない場合は、以下のように行ってください:
- Call2_vod オブジェクトの No_Disbursement_vod フィールドを True に設定します
提供サンプルトランザクションを作成する場合は、以下のように行ってください:
- Call2_vod オブジェクトの No_Disbursement_vod フィールドを False に設定します (デフォルト値)。
- 住所に対する Parent_Address_Vod 検索を Parent Call2_vod に設定する必要があります
- 親コール検索は、親コールを表す Call2_vod レコードには設定されません。
- Call2_vod オブジェクトはコンタクトおよびアカウントに関連付けられているコールレコードをサポートします。コールが関連付けられている相手に基づいて、適切な検索を入力する必要があります。
- Call_DateTime_vod または Call_Date_vod フィールドは使用中であることにご注意ください
- ディテール製品を Detailed_Products_vod フィールドにロードします。形式は、ディスカッションされた製品が優先順に左から右へ各製品の間に 2 つの空白文字を挟んで並びます。
Add_Detail_vod フィールドが使用されていない場合、親コールレコードの Call2_Detail_vod レコードをロードします。
これらのレコードをロードする場合、Call2_Detail_vod オブジェクトは Call2_Date_vod フィールドのみをサポートします。
Add_Key_Message_vod フィールドが使用されていない場合、親コールレコードの Call2_Key_Message_vod レコードをロードします
Call2_Key_Message_vod オブジェクトはコンタクトまたはアカウントに対する関連付けをサポートします。Call2_Key_Message_vod レコードが関連付けられている相手に基づいて、適切な検索を入力する必要があります。
これらのレコードをロードする場合、Call2_Key_Message_vod オブジェクトは Call2_Date_vod フィールドのみをサポートします。
- 親コールレコードの Call2_Discussion_vod レコードをロードします。
Call2_Discussion_vod オブジェクトはコンタクトまたはアカウントに対する関連付けをサポートします。Call2_Discussion_vod レコードが関連付けられている相手に基づいて、適切な検索を入力する必要があります。
これらのレコードをロードする場合、Call2_Discussion_vod オブジェクトは Call2_Date_vod フィールドのみをサポートします
- コールのすべての被験者に手順 1 から 4 を繰り返します。
- すべてのレコードを適切なアカウントまたはコンタクトに関連付けます。
各 Call2_vod レコードについて、手順 1 で作成された Call2_vod レコードに Parent_Call_vod フィールドを設定します。
- サンプルを受け取ったアカウントに基づいて Call2_Sample_vod レコードを適切な Call2_vod レコードにロードします。
Call2_Sample_vod フィールドに提供サンプルトランザクションを作成する場合は、以下のことを確認してください。
- 費用の発生したアカウントまたは連絡先に関連付けられた経費があるすべての Call2_vod レコードに Call2_Expense_vod レコードをロードします。
- すべての Call2_vod レコードの Status_vod フィールドを Submitted_vod フィールドに更新します。
Call2_vod オブジェクトの No_Disbursement_vod フィールドが False に設定されていて、他の必要なフィールドが適切にロードされている場合、提供サンプルトランザクションレコードは送信済みステータスへの更新に基づいて作成されます。
Veeva CRM には、データモデルの一貫性を維持するために使用される APEX トリガーが少数存在します。重要なトリガーとその基本機能の一覧を以下に示します。
アカウント: アカウントトリガーは、実行済みのコールレポートを持つアカウントが削除されないようにするものです。また、アカウントが削除されると、アカウントに関連付けられていた関係をすべてクリーンアップします。
コンタクト: コンタクトトリガーは、実行済みのコールレポートに出席するコンタクトが削除されないようにするものです。また、コンタクトが削除されると、コンタクトに関連付けられていた関係をすべてクリーンアップします。
関係: 関係トリガーは、タイプ (AccountA => AccountB) のレコードが入力された場合に、タイプ (AccountB => AccountA) のレコードを自動的に作成します。
住所トリガー: 住所トリガーは、所在地住所の一部が変更された場合に緯度と経度を空白にして、主住所が必ず 1 ヶ所になるようにします。また、トリガーにはサンプル提供ライセンス情報を正しく入力するためのロジックも含まれます。
ベネフィット設計 (および子) トリガー: ベネフィット設計トリガーは、ベネフィット設計とベネフィット設計ラインの表のデータを同期させます。
コールヘッダートリガー: コールヘッダートリガーは、送信済みのコールを編集不可にし、コールヘッダーが削除された場合にコールの子を削除します。また、コールヘッダートリガーは salesforce.com イベント (salesforce.com カレンダーで確認できます) のメンテナンス・管理や、イベントデータのコールとの同期も行います。
コール子トリガー: コールの子オブジェクトは削除/更新トリガーを持ち、送信済みのコールが変更されないようにします。
コーチングレポート: コーチングレポートの所有権をレビュー対象従業員に移行します。
イベントトリガー: イベントのトリガーは、Veeva CRM コールに関連するイベントが編集または削除された場合に、対応するコールレポートを同期させます。
コール一貫性トリガー: 製品戦略、アカウントプランなど様々なオブジェクトの削除トリガーは、送信済みまたは処理中のコールによってこれらのオブジェクトが参照されている場合にオブジェクトが削除されないために使用されます。
在庫注文割り当ておよび在庫注文: 送信済みの注文の削除を防ぎ、所有権をユーザ用注文に移行し、割り当ての重複を防止し、再割り当ての結果となる割り当てを自動的に作成します。
サンプルトランザクション: サンプルトランザクショントリガーは、データの統合性の確保、監査情報の保存、サンプル領収書トランザクションの入力を行います。
サンプル在庫 (および子): サンプル在庫トリガーは、送信済みの在庫が変更されないようにする機能を持ちます。
サンプル領収書: サンプル領収書のトリガーは、受領が確認されるとサンプルトランザクション表を更新します。
サンプルロット: サンプルロットは、サンプルトランザクション内で使用されるロットが削除されないようにします。
トリガーの留意事項
不適切な順番でオブジェクトがロードされた場合を除き、オブジェクトのトリガーに関連して既知の問題は、salesforce.com によるトリガー内のクエリの強制的な制限のみです。例えば、オブジェクトのトリガーが別のオブジェクトに対して複数のバリデーションを実行した場合、それぞれのバリデーションで SOQL が必要になる場合があります。これらの SOQL クエリはトリガーの起動 1 回あたり 100 回に制限されています。この制限を超えた場合は、ロード処理で「SOQL クエリが多すぎます」エラーが発生します。エラーが発生した場合は、ロード処理のバッチサイズを小さくして、コール数を減らしてからロードに戻ります。
各データロードタイプの推奨バッチサイズの一覧を以下に示します。
- アカウント関係レコード: バッチサイズ = 30
- 履歴コールレコード: バッチサイズ = 15
- 住所レコード: バッチサイズ = 50
- 子アカウントレコード = 25
- コールサンプルレコード = 10
- データ変更申請フィールドタイプレコード = 15
アサインタスクには少なくとも 1 つの以下の項目が含まれる必要があります:
- 名前
- アカウント
- 終了日
- 開始日
繰り返し、ワンクリック完了、および CLM アサインタスクの設定が可能な特定のアサインタスクタイプをデータロードの要件の詳細は、アサインタスクタイプを参照してください。