アーカイブのカスタマイズ (プレビュー)
この記事では、カスタマイズをサポートするアーカイブ Microsoft Dynamics 365財務と運用アプリ説明します。 アーカイブ フレームワークは、サポートされる機能シナリオにカスタム テーブル フィールドおよびカスタム テーブルを含める拡張機能をサポートします。
履歴テーブルとビジネス インテリジェンス エンティティのカスタム フィールドの追加
標準テーブルに追加するカスタム フィールドは、対応する履歴テーブルとビジネス インテリジェンス (BI) エンティティに追加する必要があります。 カスタマイズされた BI エンティティは、Dataverse 長期保存データをアーカイブするために Dataverse で更新する必要があります。
履歴テーブル
トランザクション レコードは履歴テーブルに移動されます。 履歴テーブルのスキーマは、対応するライブ テーブルと一致している必要があります。 ライブ テーブルのすべての列は、ミラーリングされた履歴テーブルに存在している必要があります。
列の除外ルール :SysRowVersion
および SysDataState
列は、プラットフォームによって追加され、テーブル メタデータ プロパティを使用して管理されます。 これらの列は、履歴テーブルに追加する必要がありません。
ビジネス エンティティ
Dataverse は財務と運用と連動します。 これらの仮想エンティティは、財務と運用データベースからデータを取得し、Dataverse 長期保有の対応するテーブルに保存するために使用されます。
重要
エンティティ間にリレーションシップを追加しないこと。
手順1: 拡張子を使用して履歴テーブルにフィールドを追加する
アーカイブ フレームワークでは、すべてのライブ テーブル列が対応する履歴テーブルにミラーリングされている必要があります。 テーブル拡張機能を使用して、履歴テーブルにカスタム フィールドを追加します。 財務と運用アプリで拡張機能を使って履歴テーブルにフィールドを追加する方法の詳細については、拡張機能を使ってテーブルにフィールドを追加するを参照してください。
手順2: 拡張子を使用して BI エンティティにフィールドを追加する
現在のテーブルに追加するフィールドは、対応する BI エンティティに追加する必要があります。
手順3: Dataverse で仮想エンティティを更新する
カスタマイズされた ビジネス エンティティは、Dataverse 長期保有ストアのデータをアーカイブするために Dataverse で更新する必要があります。
アーカイブ シナリオに新しいテーブルを追加する
メインのライブ テーブルと直接的または間接的な関係がある場合、追加のテーブルをアーカイブ シナリオに含めることができます。
アーカイブ スコープのライブ テーブルに対応する履歴テーブルを作成するには、以下の手順に従います。
- ライブ テーブルのすべてのメタデータ プロパティを含む、対応するライブ テーブルのすべてのフィールドをミラーする新しい履歴テーブルを作成します。 この記事の前の列の除外ルールを参照してください。
- ライブ テーブルのインデックスを履歴テーブルにミラーリングしないでください。 ほとんどの履歴テーブルでは、
RecId
列のクラスター化されたインデックスで十分です。 必要に応じてクエリのパフォーマンスを改善し、外部のキー関係を維持するための追加のインデックスを作成します。 - 新しいテーブルをアーカイブ テーブル チャートに追加するために、シナリオ用の
ArchiveAutomationJobRequestCreator
クラスを拡張します。
コードの例
以下の例は、総勘定元帳アーカイブ ジョブ リクエスト作成クラスをカスタマイズして、新しいテーブルを追加する方法を示しています。
using Microsoft.Dynamics.Archive.Contracts;
[ExtensionOf(classStr(LedgerArchiveAutomationJobRequestCreator]
final class LedgerArchiveAutomationJobRequestCreator_GeneralLedger_Extension
{
public ArchiveJobPostRequest createPostJobRequestForArchiveTrans(LedgerArchiveTrans _archiveTrans
{
ArchiveJobPostRequest postRequest = next createPostJobRequestForArchiveTrans(_archiveTrans;
ArchiveServiceArchiveJobPostRequestBuilder builder =
ArchiveServiceArchiveJobPostRequestBuilder::createFromArchiveJobPostRequest(postRequest;
// Use builder to add more live tables, history tables, join conditions and where conditions (if needed
// Example: Adding my new general ledger table to archive table graph
var generalJournalAccountEntryTable = new DictTable(tableNum(GeneralJournalAccountEntry;
var generalJournalAccountEntryTableName = generalJournalAccountEntryTable.name(DbBackend::Sql;
var newMyNewGeneralLedgerTable = new DictTable(tableNum(MyNewGeneralLedgerTable;
var newMyNewGeneralLedgerTableName = newMyNewGeneralLedgerTable.name(DbBackend::Sql;
var newMyNewGeneralLedgerTableHistory = new DictTable(tableNum(MyNewGeneralLedgerTableHistory;
var newMyNewGeneralLedgerTableHistoryName = newMyNewGeneralLedgerTableHistory.name(DbBackend::Sql;
var myNewGeneralLedgerTableSourceTable = ArchiveServiceSourceTableConfiguration::newForSourceTable(
newMyNewGeneralLedgerTableName,
newMyNewGeneralLedgerTableHistoryName,
tableStr(MyNewGeneralLedgerTableBiEntity;
// Add parent table
myNewGeneralLedgerTableSourceTable.parmParentSourceTableName(generalJournalAccountEntryTableName;
builder.addSourceTableForLongTermRetention(myNewGeneralLedgerTableSourceTable
.addJoinCondition(newMyNewGeneralLedgerTableName,
newMyNewGeneralLedgerTable.fieldName(fieldNum(MyNewGeneralLedgerTable, GeneralJournalAccountEntry, DbBackend::Sql,
generalJournalAccountEntryTable.fieldName(fieldNum(GeneralJournalAccountEntry, RecId, DbBackend::Sql;
return builder.completeArchiveJobPostRequest(;
ライブ テーブル、履歴テーブル、Dataverse マネージド データ レイク テーブルの財務と運用テーブル名
シナリオ | ライブ テーブル | 履歴テーブル | BI エンティティ | Dataverse-マネージド データ レイク テーブル |
---|---|---|---|---|
財務一般会計 | GENERALJOURNALACCOUNTENTRY | GENERALJOURNALACCOUNTENTRYHISTORY | GeneraljournalaccountentryBiEntity | mserp_GeneraljournalaccountentryBiEntity |
GENERALJOURNALACCOUNTENTRY_W | GENERALJOURNALACCOUNTENTRYHISTORY_W | GeneraljournalaccountentrywBiEntity | mserp_GeneraljournalaccountentrywBiEntity | |
GENERALJOURNALENTRY | GENERALJOURNALENTRYHISTORY | cus | mserp_GeneraljournalentryBiEntity | |
GENERALJOURNALENTRY_W | GENERALJOURNALENTRYHISTORY_W | GeneraljournalentrywBiEntity | mserp_GeneraljournalentrywBiEntity | |
LEDGERCONSOLIDATEHISTREF | LEDGERCONSOLIDATEHISTREFHISTORY | LedgerconsolidatehistrefBiEntity | mserp_LedgerconsolidatehistrefBiEntity | |
LEDGERENTRY | LEDGERENTRYHISTORY | LedgerentryBiEntity | mserp_LedgerentryBiEntity | |
LEDGERENTRYJOURNAL | LEDGERENTRYJOURNALHISTORY | LedgerentryjournalBiEntity | mserp_LedgerentryjournalBiEntity | |
LEDGERENTRYJOURNALIZING | LEDGERENTRYJOURNALIZINGHISTORY | LedgerentryjournalizingBiEntity | mserp_LedgerentryjournalizingBiEntity | |
LEDGERTRANSSETTLEMENT | LEDGERTRANSSETTLEMENTHISTORY | LedgertranssettlementBiEntity | mserp_LedgertranssettlementBiEntity | |
SUBLEDGERVOUCHERGENERALJOURNALENTRY | SUBLEDGERVOUCHERGENERALJOURNALENTRYHISTORY | SubledgervouchergeneraljournalentryBiEntity | mserp_SubledgervouchergeneraljournalentryBiEntity | |
Supply Chain Management 販売注文 | MCRRETURNSALESTABLE | MCRRETURNSALESTABLEHISTORY | McrreturnsalestableBiEntity | mserp_McrreturnsalestableBiEntity |
MCRSALESLINE | MCRSALESLINEHISTORY | McrsaleslineBiEntity | mserp_McrsaleslineBiEntity | |
MCRSALESTABLE | MCRSALESTABLEHISTORY | McrsalestableBiEntity | mserp_McrsalestableBiEntity | |
RETAILSALESLINE | RETAILSALESLINEHISTORY | RetailsaleslineBiEntity | mserp_RetailsaleslineBiEntity | |
RETAILSALESTABLE | RETAILSALESTABLEHISTORY | RetailsalestableBiEntity | mserp_RetailsalestableBiEntity | |
SALESLINE | SALESLINEHISTORY | SaleslineBiEntity | mserp_SaleslineBiEntity | |
SALESLINE_BR | SALESLINEHISTORY_BR | SaleslinebrBiEntity | mserp_SaleslinebrBiEntity | |
SALESLINE_IN | SALESLINEHISTORY_IN | SaleslineinBiEntity | mserp_SaleslineinBiEntity | |
SALESLINE_W | SALESLINEHISTORY_W | SaleslinewBiEntity | mserp_SaleslinewBiEntity | |
SALESTABLE | SALESTABLEHISTORY | SalestableBiEntity | mserp_SalestableBiEntity | |
SALESTABLE_BR | SALESTABLEHISTORY_BR | SalestablebrBiEntity | mserp_SalestablebrBiEntity | |
SALESTABLE_RU | SALESTABLEHISTORY_RU | SalestableruBiEntity | mserp_SalestableruBiEntity | |
SALESTABLE_W | SALESTABLEHISTORY_W | SalestablewBiEntity | mserp_SalestablewBiEntity | |
Supply Chain Management 在庫トランザクション | INVENTTRANSARCHIVE | INVENTTRANSARCHIVEHISTORY | InventtransarchiveBiEntity | mserp_InventTransArchiveBiEntity |
Supply Chain Management 在庫仕訳帳 | INVENTJOURNALTABLE | INVENTJOURNALTABLEHISTORY | InventjournaltableBiEntity | mserp_InventjournaltableBiEntity |
INVENTJOURNALTABLE_IN | INVENTJOURNALTABLE_INHISTORY | InventjournaltableinBiEntity | mserp_InventjournaltableinBiEntity | |
INVENTJOURNALTRANS | INVENTJOURNALTRANSHISTORY | InventjournaltransBiEntity | mserp_InventjournaltransBiEntity | |
INVENTJOURNALTRANS_IN | INVENTJOURNALTRANS_INHISTORY | InventjournaltransinBiEntity | mserp_InventjournaltransinBiEntity | |
Finance 税トランザクション | TAXTRANS | TAXTRANSHISTORY | TaxtransBiEntity | mserp_TaxtransBiEntity |
TAXTRANS_BR | TAXTRANSHISTORY_BR | TaxtransbrBiEntity | mserp_TaxtransbrBiEntity | |
TAXTRANSGENERALJOURNALACCOUNTENTRY | TAXTRANSGENERALJOURNALACCOUNTENTRYHISTORY | TaxtransgeneraljournalaccountentryBiEntity | mserp_TaxtransgeneraljournalaccountentryBiEntity | |
TAXTRANS_IN | TAXTRANSHISTORY_IN | TaxtransinBiEntity | mserp_TaxtransinBiEntity | |
TAXTRANS_IT | TAXTRANSHISTORY_IT | TaxtransitBiEntity | mserp_TaxtransitBiEntity | |
TAXTRANS_REPORTING | TAXTRANSHISTORY_REPORTING | TaxtransreportingBiEntity | mserp_TaxtransreportingBiEntity | |
TAXTRANS_RU | TAXTRANSHISTORY_RU | TaxtransruBiEntity | mserp_TaxtransruBiEntity | |
TAXTRANSSUBLEDGERJOURNALACCOUNTENTRY | TAXTRANSSUBLEDGERJOURNALACCOUNTENTRYHISTORY | TaxtranssubledgerjournalaccountentryBiEntity | mserp_TaxtranssubledgerjournalaccountentryBiEntity | |
TAXTRANS_TH | TAXTRANSHISTORY_TH | TaxtransthBiEntity | mserp_TaxtransthBiEntity | |
TAXTRANS_W | TAXTRANSHISTORY_W | TaxtranswBiEntity | mserp_TaxtranswBiEntity |