Note
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。
この記事では、財務アプリと運用アプリとMicrosoft Dataverseの間のデュアルライト統合に関するトラブルシューティング情報を提供します。 具体的には、ライブ同期に関する問題の解決に役立つ情報が提供されます。
Important
この記事で対処する問題の一部には、システム管理者ロールまたは Microsoft Entra テナント管理者の資格情報が必要な場合があります。 各セクションでは、特定のロールまたは特定の資格情報が必要な場合について説明しています。
行の作成時にライブ同期でエラーが表示される
財務と運用アプリで行を作成した際に、次のエラー メッセージが表示される場合があります:
[{\"error\":{\"code\":\"0x80072560\",\"message\":\"ユーザーは組織のメンバーではありません。\"}}], リモート サーバーはエラーを返しました: (403) 禁止されています。"}}
このエラーは、デュアルライト アプリケーション ユーザーと所有チームを正しく構成していない場合に発生します。 この問題を解決するには、「 システム要件と前提条件」の手順に従います。 これらの手順を完了するには、Dataverse で作成されたデュアルライト アプリケーション ユーザーがシステム管理者の役割を持っている必要があります。 また、既定の所有チームにシステム管理者ロールが割り当てられている必要があります。
クラウドでホストされる開発環境では、環境用に構成したアプリケーション ユーザーに、デュアルライトのロールとアクセス許可を付与する必要もあります。 必要なアクセス許可を構成する手順については、 ワンボックス環境のアプリ ユーザーの構成に関するセクションを参照してください。
テーブル データを保存しようとする場合、ライブ同期にエラーが表示される
問題を解決するために必要なロール: システム管理者
財務と運用アプリでテーブル データを保存しようとする際に、次のエラー メッセージが表示される場合があります:
データベースへの変更を保存できません。 作業単位はトランザクションをコミットできません。 エンティティ uoms にデータを書き込むことができません。 UnitOfMeasureEntity への書き込みが失敗し、次のエラーメッセージが表示されました。エンティティ uoms と同期することはできません。
問題を修正するには、前提条件となる参照データが財務と運用アプリと Dataverse の両方に存在していることを確認する必要があります。 たとえば、顧客レコードが特定の顧客グループに属している場合は、その顧客グループ レコードが Dataverse に存在することを確認します。
両方の場所にデータが存在し、問題がデータに関連していないことを確認する場合は、次の手順に従います。
- Excel アドインを使用して DualWriteProjectConfigurationEntity エンティティを開きます。 アドインを使用するには、財務と運用の Excel アドインでデザイン モードを有効にし、ワークシートに DualWriteProjectConfigurationEntity を追加します。 詳細については、Excel でのエンティティ データの表示と更新 を参照してください。
- デュアルライト マップとプロジェクトで問題が発生したレコードを選択して削除します。 デュアル書き込みマッピングごとに 2 つのレコードが存在します。
- Excel アドインを使用して変更を公開します。 この手順では、エンティティと基になるテーブルからレコードを削除します。
財務と運用アプリにデータを作成する際の、読み取り、書き込み権限に関するエラーを処理する
財務と運用アプリでデータを作成した際に、「不正な要求」というエラー メッセージが表示される場合があります。
この問題を解決するには、マッピングされた Dynamics 365 Sales または Dynamics 365 Customer Service ビジネス ユニットのチームに適切なセキュリティ ロールを割り当てることで、不足している特権を有効にします。
財務および運用アプリで、データ統合接続セットがマップする事業部門を見つけます。
Customer Engagement アプリで環境にログインし、設定 > セキュリティ の順に移動し、マッピングされた事業単位のチームを検索します。
編集用のチームのページを開き、ロールの管理を選択します。
チーム ロールの管理ダイアログ ボックスで、関連するテーブルの読み取り/書き込み特権を持つロールを割り当てて、OK を選択します。
Dataverse 環境が最近変更された環境での同期の問題を修正する
問題を解決するために必要なロール: システム管理者
財務と運用アプリでデータを作成した際に、次のエラー メッセージが表示される場合があります:
{"entityName":"CustCustomerV3Entity","executionStatus":2,"fieldResponses":[],"recordResponses":[{"errorMessage":"エンティティ CustCustomerV3Entity のペイロードを生成できません","logDateTime":"2019年08月27日18時51分52.5843124秒","verboseError":"ペイロードの作成が失敗しました。エラー: 無効なURIです。URIが空です。"}],"isErrorCountUpdated":true}
顧客エンゲージメント アプリのエラー メッセージを次に示します。
ISV コードから予期しないエラーが発生しました。 (ErrorType = ClientError)プラグインからの予期しない例外 (実行): Microsoft.Dynamics.インテグレーター.DualWriteRuntime.Plugins.PostCommitPlugin: System.Exception: エンティティ アカウントの処理に失敗しました - 接続されたパーティーが一定期間後に適切に応答しなかったか、接続されたホストが応答しなかったために接続が確立されなかったために接続が失敗しました。
このエラーは、財務および運用アプリでデータを作成しようとしたときに、Dataverse 環境を誤ってリセットした場合に発生します。
Important
環境を再リンクする場合は、軽減策の手順を続行する前に、すべてのエンティティ マップを停止する必要があります。
この問題を解決するには、Dataverse と財務および運用アプリの両方で手順を完了する必要があります。
財務と運用アプリで、次の手順に従います:
- Excel アドインを使用して DualWriteProjectConfigurationEntity エンティティを開きます。 アドインを使用するには、財務と運用の Excel アドインでデザイン モードを有効にし、ワークシートに DualWriteProjectConfigurationEntity を追加します。 詳細については、Excel でのエンティティ データの表示と更新 を参照してください。
- デュアルライト マップとプロジェクトで問題が発生したレコードを選択して削除します。 デュアル書き込みマッピングごとに 2 つのレコードが存在します。
- Excel アドインを使用して変更を公開します。 この手順では、エンティティと基になるテーブルからレコードを削除します。
- 財務と運用または Dataverse 環境を再リンクする際にエラーを防ぐには、二重書き込みの構成が残っていないことを確認してください。
Dataverse で、次の手順に従います。
- Dataverse 環境にサインインします (
https://*****.crm.dynamics.com/など)。 - 詳細設定>高度な検索に移動します。
- DualWrite ランタイムのコンフィギュレーションを選択します。
- 表示する列を選択します。
- 結果を表示して、コンフィギュレーションを表示します。
- すべてのインスタンスを削除します。
- Dataverse 環境にサインインします (
財務と運用アプリで、次の手順に従います:
- Excel アドインを使用して DualWriteProjectConfigurationEntity エンティティを開きます。 アドインを使用するには、財務と運用の Excel アドインでデザイン モードを有効にし、ワークシートに DualWriteProjectConfigurationEntity を追加します。 詳細については、Excel でのエンティティ データの表示と更新 を参照してください。
- デュアルライト マップとプロジェクトで問題が発生したレコードを選択して削除します。 デュアル書き込みマッピングごとに 2 つのレコードが存在します。
- Excel アドインを使用して変更を公開します。 この手順では、エンティティと基になるテーブルからレコードを削除します。
- 財務と運用または Dataverse 環境を再リンクする際にエラーを防ぐには、二重書き込みの構成が残っていないことを確認してください。
データベース全体のコピーを実行した後のライブ同期エラー
システム間でデータベースの完全コピーを実行した後、データベース操作を実行しようとすると、次のエラー メッセージが表示されることがあります。
SecureConfig 組織 (???) が実際の CRM 組織 (???) と一致しません。
デュアルライト ランタイム プラグインには、別のシステムの 1 つのシステムで設定したデュアル書き込み構成を使用できないことを確認するエラー メッセージが表示されます。
この問題を解決するには、データベースを復元した後、 msdyn_dualwriteruntimeconfig テーブル内のすべてのレコードを削除します。 詳細については、二重書き込み環境のリンクの解除および再リンク を参照してください。
デュアル書き込みマップでのクエリ フィルター構文が正しくない場合に発生するライブ同期の問題
デュアルライト マップ フィルターのクエリ式が構文的に正しい場合でも、期待どおりに動作しない可能性があります。 フィルター式は、クエリ オブジェクトの個々のデータ ソースではなく、エンティティに適用されます。 そのため、生成された SQL クエリは期待される結果を返しません。
次に例を示します。
Query entity = PROJECTENTITY
Query expression = (ParentProject == "")
フィルターによって、親を持たないプロジェクトが除外される場合があります。 ただし、フィルターは次の例のようなクエリに変換されるため、機能しません。
SELECT T1.RECID,T1.MODIFIEDDATETIME,T1.RECVERSION,T1.RECID,T1.DIMENSION,
T1.LOCATION,T1.PROJECTCONTROLLER,T1.PROJECTID,T1.PROJECTMANAGER,T1.REFERENCE,
T1.SALESMANAGER,T1.SCHEDULED,T1.RECVERSION#8,T1.RECVERSION#7,
T1.RECVERSION#6,T1.RECVERSION#5,T1.RECVERSION#4,T1.RECVERSION#3,
T1.RECVERSION#2,T1.RECID#8,T1.RECID#7,T1.RECID#6,T1.RECID#5,
T1.RECID#4,T1.RECID#3,T1.RECID#2,T1.PARTITION FROM PROJECTENTITY T1
WHERE(((((((((((PARTITION=5637144576) AND (DATAAREAID=N'usmf')) AND
((PARTITION#2=5637144576) OR (PARTITION#2 IS NULL))) AND
((PARTITION#3=5637144576) OR (PARTITION#3 IS NULL))) AND
((PARTITION#4=5637144576) OR (PARTITION#4 IS NULL))) AND
((PARTITION#5=5637144576) OR (PARTITION#5 IS NULL))) AND
((PARTITION#6=5637144576) OR (PARTITION#6 IS NULL))) AND
((PARTITION#7=5637144576) OR (PARTITION#7 IS NULL))) AND
((PARTITION#8=5637144576) OR (PARTITION#8 IS NULL))) AND
((DATAAREAID#8=N'usmf') OR (DATAAREAID#8 IS NULL))) AND
(PARENTPROJECT=''))
ORDER BY T1.PROJECTID
実際の結果は、parentProject フィールドが null と評価されます。 ただし、null は空の文字列と同じではありません。 この不一致により、クエリ フィルターは有効な結果を返しません。
この問題を解決するには、次の手順に従います。
拡張モデルに計算列を追加します。 この列では、
nullを空の文字列に変換するロジックを使用します。SysComputedColumn::if(SysComputedColumn::isNullExpression(ParentProject), SysComputedColumn::returnLiteral(""), fieldName);既定の列の代わりに新しい計算列のフィルターを使用します。
開発環境でフィルターを評価するには、次の X++ コードを使用して結果を検証します。 このコードをスタンドアロン プログラムとして実行します。 二重書き込みマップでこれらのフィルターを使用する前に、エンティティに適用できるさまざまな種類のフィルターを評価するために使用できます。 クエリをデータベースに対して実行すると、不一致を評価できます。
var entityName = "PROJECTENTITY";
var filterExpression = '(ParentProject == "")';
Query query = new Query();
query.literals(NoYes::Yes);
QueryBuildDataSource qbd = query.addDataSource(tablename2id(entityName));
qbd.addRange(fieldname2id(qbd.table(),identifierStr(RecVersion))).value(filterExpression);
qbd.addSelectionField(fieldname2id(qbd.table(),identifierStr(RecId)));
QueryRun qRun = new QueryRun(query);
// This provides the actual sql statement to execute
var actualSqlStatement = query.getSQLStatement();
while(qRun.next())
{
var rec = qRun.get(tableName2Id(entityName));
}
財務と運用アプリのデータが Dataverse に同期されません
ライブ同期中に、データの一部のみが財務と運用アプリから Dataverse に同期されるか、データがまったく同期されない問題が発生する可能性があります。
Note
開発時に、この問題を修正する必要があります。
問題の修正を開始する前に、次の前提条件を確認してください。
- カスタム変更が単一のトランザクション スコープで記述されていることを確認してください。
- ビジネス イベントおよび二重書き込みフレームワークは、
doinsert()、doUpdate()、およびrecordset()操作、またはskipBusinessEvents(true)がマークされているレコードを処理しません。 コードがこれらの関数内にある場合、デュアルライトはトリガーされません。 - マップされるデータ ソースのビジネス イベントを登録する必要があります。 一部のデータ ソースでは外部結合が使用され、財務および運用アプリでは読み取り専用としてマークされます。 これらのデータ ソースは追跡されません。
- 変更は、変更がマップされたフィールドにある場合にのみトリガーされます。 マップされていないフィールドの変更では、デュアル書き込みがトリガーされません。
- フィルター評価が有効な結果を提供することを確認してください。
トラブルシューティングの手順
二重書き込み管理者ページ上のフィールド マッピングを確認します。 フィールドが財務アプリと運用アプリから Dataverse にマップされていない場合、追跡されません。 たとえば、次の図では、説明フィールドは Dataverse から追跡されていますが、財務と運用アプリからは追跡されていません。 財務と運用アプリ内のそのフィールドへの変更は追跡されません。
データ ソースがビジネス イベント定義で追跡されているかどうかを決定します。 たとえば、次の図では、DefaultDimensionDAVs テーブルと基になるテーブルのフィールドは変更のために追跡されません。 外部結合を使用し、読み取り専用としてマークされているデータ ソースは追跡されません。
次の図に示すように、マップされたテーブル フィールドが BUSINESSEVENTSDEFINITION テーブルに表示されるかどうかを決定します。 クエリ結果で探しているフィールドが見つからない場合、デュアル書き込みではトリガーされません。
サンプル シナリオ
財務および運用アプリでは、連絡先レコードのアドレスを更新しますが、住所の変更は Dataverse に同期されません。 このシナリオは、BusinessEventsDefinition テーブルのレコードに、影響を受けるテーブルとエンティティの組み合わせがないために発生します。 具体的には、LogisticsPostalAddress テーブルは smmContactpersonCDSV2Entity エンティティの直接データ ソースではありません。 smmContactpersonCDSV2Entity エンティティには smmContactPersonV2Entity がデータ ソースとしてあり、smmContactPersonV2Entity には LogisticsPostalAddressBaseEntity がデータ ソースとしてあります。 LogisticsPostalAddress テーブルは、LogisticsPostalAddressBaseEntity のデータ ソースです。
財務および運用アプリで変更しているテーブルが、それを含むエンティティにリンクされていない場合など、一部の非標準パターンでも同様の状況が発生する可能性があります。 たとえば、基本住所データは smmContactPersonCDSV2Entity エンティティで計算されます。 二重書き込みフレームワークは、基になるテーブルに対する変更がエンティティにマップされる方法を決定しようとします。 通常、この方法で十分です。 ただし、場合によっては、リンクが非常に複雑であるため、具体的にする必要があります。 関連するテーブルの RecId がエンティティで直接利用可能であることを確認する必要があります。 次に、静的メソッドを追加して、テーブルの変更を監視します。
この例では、smmContactPersonCDSV2Entity::getEntityDataSourceToFieldMapping() のメソッドを確認します。 CustCustomerV3entity と VendVendorV2Entity は、この状況に対応するように変更されます。
この問題を解決するには、次の手順に従います。
PrimaryPostalAddressRecId フィールドを smmContactPersonV2Entity エンティティに追加します。 内部用にします。
smmContactPersonCDSV2Entity エンティティに同じフィールドを追加します。
smmContactPersonCDSV2Entity クラスに、次の方法を追加します。
public static container getEntityDataSourceToFieldMapping(container mapping) { mapping += [[tablestr(smmContactPersonCDSV2Entity), tablenum(LogisticsPostalAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryPostalAddressRecId)]]; return mapping; }データベースを同期し、アプリケーションをビルドします。
smmContactPersonCDSV2Entity エンティティで作成したすべてのデュアル書き込みマップを停止します。
マップを開始します。 BusinessEventsDefinition テーブルの refentityname 値が smmContactPersonCDSV2Entity である行の RefTableName 列を使用して追跡を開始した新しいテーブル (この例では LogisticsPostalAddress) が表示されます。
複数のレコードが財務と運用アプリから Dataverse に同じバッチで送信されるレコードを作成する場合のエラー
どのトランザクションでも、財務と運用アプリはデータをバッチで作成し、それをバッチとして Dataverse に送信します。 同じトランザクションの一部として 2 つのレコードを作成し、それらが相互に参照している場合は、財務および運用アプリの次の例のようなエラー メッセージが表示されることがあります。
エンティティ aaa_fundingsources にデータを書き込めません。 値 {PC00...} で ebecsfs_contracts を検索できません。 値 {PC00...} で aaa_fundingsources を検索できません。 aaa_fundingsources への書き込みがエラー メッセージの例外メッセージで失敗しました: リモート サーバーがエラーを返しました: (400) 不正な要求。
この問題を修正するには、財務と運用アプリでエンティティの関係を作成して、2 つのエンティティが相互に関連していること、および関連するレコードが同じトランザクションで処理されることを示します。
エラー メッセージの詳細ログの有効化
財務と運用アプリでは、Dataverse 環境に関連するエラーが発生する場合があります。 エラー メッセージには、メッセージの全文またはその他の関連データが含まれていない場合があります。 詳細情報を取得するには、財務と運用アプリのすべてのプロジェクト構成の DualWriteProjectConfigurationEntity エンティティに存在する IsDebugMode フラグを設定することにより、詳細ログを有効にできます。
- Excel アドインを使用して DualWriteProjectConfigurationEntity エンティティを開きます。 アドインを使用するには、財務と運用の Excel アドインでデザイン モードを有効にし、ワークシートに DualWriteProjectConfigurationEntity を追加します。 詳細については、Excel でのエンティティ データの表示と更新 を参照してください。
- プロジェクトの IsDebugMode フラグをはいに設定します。
- シナリオを実行します。
- 詳細なログは、DualWriteErrorLog テーブルで確認できます。 テーブル ブラウザを使用してデータを検索するには、次の URL を使用します:
https://XXXaos.cloudax.dynamics.com/?mi=SysTableBrowser&tableName=DualWriteErrorLog。 - デバッグ モードでさらにログを取得するには、KB 4595434 (二重書き込みライブ同期で反映される空白値の修正) に更新をインストールします。
顧客または連絡先の住所を追加する際のエラー
財務と運用アプリや Dataverse の顧客または連絡先に住所を追加しようとする場合、次のようなエラー メッセージが表示される場合があります。
データをエンティティ msdyn_partypostaladdresses に書き込めません。 DirPartyPostalAdlocationCDSEntity への書き込みに失敗し、次のエラー メッセージが表示されました。要求に失敗しました。ステータス コード BadRequest、CDS エラー コード: 0x80040265、応答メッセージ: プラグインでエラーが発生しました。 場所 ID の属性値を持つレコードが既に存在します。 エンティティ キーの場所 ID キーは固有の値がこの属性のセットに含まれている必要があります。 一意の値を選択してやり直してください。
この問題を解決するには、デュアルライト オーケストレーション パッケージ バージョン 2.2.2.60 をインストールして、 Address テーブルのキーが次の表に示すように定義されるようにします。
| 財産 | Value |
|---|---|
| 表示名 | 場所キー |
| Name | msdyn_locationkey |
| フィールド | msdyn_locationid、parentid |
| 地位 | アクティブです |
| システム ジョブ | 空白 |
Dataverse で顧客を追加する際のエラー
Dataverse で顧客を追加しようとする際に、次のエラー メッセージが表示される場合があります。
"RecordError0": "書き込みに失敗したエンティティ顧客 V3 に対して不明な例外 - 当事者タイプ '組織' の当事者レコードが見つかりませんでした"}。
Dataverse で顧客を作成すると、新しいパーティ番号が生成されます。 顧客レコードとパーティを財務および運用アプリと同期したが、顧客レコードが別のパーティ番号で既に存在する場合、エラー メッセージが表示されます。
問題を解決するには、「パーティ検索」を使って顧客を探してください。 顧客が存在しない場合、新しい顧客レコードを作成します。 顧客が存在する場合は、既存の当事者を使用して新しい顧客レコードを作成します。
新規の顧客、仕入先、または連絡先を Dataverse に作成する場合のエラー
新規の顧客、仕入先、連絡先を Dataverse に作成しようとする場合、次のエラー メッセージが表示される場合があります。
当事者のタイプを「DirOrdirization」から「DirPerson」に更新することはできません。代わりに、既存の当事者を削除し、その後、新しいタイプの挿入を実行する必要があります。
Dataverse では、 msdyn_party テーブルに番号シーケンスがあります。 Dataverse でアカウントを作成する場合は、新しいパーティー (組織の種類の Party-001 など) も作成します。 このデータは財務と運用アプリに送信されます。 Dataverse 環境をリセットするか、財務環境と運用環境を別の Dataverse 環境にリンクし、Dataverse で新しい連絡先レコードを作成する場合は、 Party-001 で始まる新しいパーティー値を作成します。 今回は、作成するパーティー レコードが人物タイプの Party-001 です。 このデータを同期すると、組織の種類のパーティ レコード Party-001 が既に存在するため、財務アプリと運用アプリに上記のエラー メッセージが表示されます。
この問題を修正するには、Dataverse の msdyn_party テーブルの msdyn_partynumber フィールドの自動番号順序を別の自動番号順序に変更します。
顧客マッピングまたは連絡先マッピングに関するパフォーマンスの問題
getEntityDataSourceToFieldMapping メソッド (CustCustomerV3Entity エンティティ) と getEntityDataSourceToFieldMapping メソッド (smmContactPersonCDSV2Entity エンティティ内) をカスタマイズすることで、顧客と連絡先のライブ同期のパフォーマンスをわずかに向上させることができます。 これらのカスタマイズにより、BusinessEventsDefinition テーブルのレコード数が削減されます。 これにより、イベントの数が減少し、上がるレコードの数が減ります。
CustCustomerV3Entityエンティティの getEntityDataSourceToFieldMapping メソッドは、顧客の電子アドレスまたは住所の更新がビジネス イベントをトリガーすることを確認し、更新されたデータが Dataverse に送信されるようにします。 すべてのフィールドを使用せず、二重書き込みで情報を必要としない場合は、メソッドの適切な行をコメントアウトします。 このメソッドで追加するすべての追跡対象フィールドとテーブルは、追跡対象テーブルと追跡対象エンティティの組み合わせの BusinessEventsDefinition テーブルにレコードを追加します。
public static container getEntityDataSourceToFieldMapping(container mapping)
{
mapping += [
[tablestr(DirPartyBaseEntity), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, AddressRecordId)],
[identifierstr(DirPartyBaseEntity), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactURLRecordId)],
[identifierstr(DirPartyBaseEntity1), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactPhoneRecordId)],
[identifierstr(DirPartyBaseEntity2), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactEmailRecordId)],
[identifierstr(DirPartyBaseEntity3), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactFaxRecordId)],
[identifierstr(DirPartyBaseEntity4), tablenum(DirPartyLocation), fieldstr(CustCustomerV3Entity, DirPartyLocationRecordId)],
[identifierstr(DirPartyBaseEntity5), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, InvoiceAddressRecordId)],
[identifierstr(DirPartyBaseEntity6), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, DeliveryAddressRecordId)],
[identifierStr(DirPartyBaseEntity7), tablenum(DirPartyTable), fieldstr(CustCustomerV3Entity, PartyRecordId)]];
return mapping;
}
同様に、smmContactPersonCDSV2Entity エンティティの getEntityDataSourceToFieldMapping メソッドは、連絡先の電子アドレスまたは住所の更新がビジネス イベントをトリガーすることを確認し、更新されたデータが Dataverse に送信されるようにします。 このメソッドでは、使用しないフィールドの行をコメントアウトできます。
public static container getEntityDataSourceToFieldMapping(container mapping)
{
mapping += [
[tablestr(DirPartyBaseEntity), tablenum(LogisticsPostalAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryPostalAddressRecId)],
[identifierStr(DirPartyBaseEntity), tablenum(DirPartyTable), fieldstr(smmContactPersonCDSV2Entity, PrimaryAddressLocation)],
[identifierStr(DirPartyBaseEntity1), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactEmailRecordId)],
[identifierStr(DirPartyBaseEntity2), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactFaxRecordId)],
[identifierStr(DirPartyBaseEntity3), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactPhoneRecordId)],
[identifierStr(DirPartyBaseEntity4), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactFacebookRecordId)],
[identifierStr(DirPartyBaseEntity5), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactTwitterRecordId)],
[identifierStr(DirPartyBaseEntity6), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactURLRecordId)],
[identifierStr(DirPartyBaseEntity7), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactLinkedInRecordId)],
[identifierStr(DirPartyBaseEntity8), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactTelexRecordId)],
[identifierStr(DirPartyBaseEntity9), tablenum(DirPartyTable), fieldstr(smmContactPersonCDSV2Entity, PartyRecordId)]];
return mapping;
}
メソッドを更新した後、次の手順に従います。
- データベースを同期し、アプリケーションをビルドします。
- smmContactPersonCDSV2Entity および CustCustomerV3Entity エンティティのすべての二重書き込みマップを停止します。
- マップを開始します。 smmContactPersonCDSV2Entity および CustCustomerV3Entity エンティティと BusinessEventsDefinition テーブルに表示されるレコードが少なくなり、パフォーマンスがわずかに向上する可能性があります。
エンティティの構成キーが無効になるとライブ同期が失敗する
問題を解決するために必要なロール: システム管理者
エンティティのフィールドの構成キーを無効にした場合、テーブル マッピングのライブ同期は失敗します。 たとえば、リテール構成キーを無効にすると、 Customers V3 エンティティの同期に失敗します。
Customers V3 エンティティには、RetailCustTableのフィールドが含まれています。これには、エンティティでこれらのフィールドを使用できるようにするために Retail 構成キーを有効にする必要があります。 エンティティをデュアルライトのライブ同期操作で使用可能にするには、エンティティに含まれるフィールドのすべての構成キーを有効にする必要があります。
この問題を解決するには、次のいずれかのメソッドを使用します。
- システム管理者は、エンティティのすべてのフィールドに対して構成キーを有効にできます。
- 有効な構成キーでカバーされるフィールドのみを含む新しいエンティティを作成し、新しいデータ エンティティ用の新しい二重書き込みマップを作成します。
詳細については、「 構成キーとデータ エンティティ」を参照してください。