Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
This article explains how the archive feature in Microsoft Dynamics 365 finance and operations apps supports customization. The archival framework is extensible and allows you to include custom table fields and custom tables within supported functional scenarios.
Customization options
- Add custom fields to Microsoft managed tables in standard archive scenarios.
- Add custom tables to standard archive scenarios.
- Build your own custom archive scenario using custom tables (Preview).
Note
Only custom tables can be included when building your own custom archive scenario.
Add custom fields in history tables and business intelligence entities
Custom fields that are added to a standard table must be added to the corresponding history table and the business intelligence (BI) entity. The customized BI entity must be refreshed in Dataverse to archive data with Dataverse long term retention.
History tables
Transactions records are moved to the history tables. The schema of a history table must match its corresponding live table. All columns in the live table must be present in its mirrored history table.
Column exclusion rule: SysRowVersion and SysDataState columns are added by the platform and managed by using table metadata properties. These columns don't have to be added to the history tables.
Business entity
Dataverse interacts with finance and Operations through virtual entities. These virtual entities are used to retrieve data from the finance and operations database and save it to the corresponding tables in the Dataverse long term retention.
Important
Don't add relationships between the entities.
Required fields on tables
Tables, both live and history, that participate in archive scenarios must include:
- Fields used in WHERE conditions: Any fields that are used to filter data in your archive job (for example,
DataAreaId,Ledger, date ranges, status fields) - Fields used in JOIN conditions: Any fields that relate child tables to parent tables
Partition: Typically included for multi-tenant scenarios
Note
Virtual entity field naming: When Dynamics 365 finance and operations tables are published as virtual entities in Dataverse, the Dynamics 365 finance and operations DataAreaId column appears as SysDataAreaId on the virtual entity. The Archive service automatically handles this naming difference when moving data between Dynamics 365 finance and operations and Dataverse.
Add fields to the history table via extensions
The archival framework requires that all live table columns are mirrored in the corresponding history tables. Use table extensions to add the custom fields to history tables. For more information about how to add fields to history tables through extension in finance and operations apps, see Add fields to tables through extension.
Critical requirements for history tables:
- All fields from the live table must be present (except
SysRowVersionandSysDataState). - Ensure fields used in your archive scenario's join and where conditions are present.
- Create a clustered index on
RecId. - Add indexes on fields used in join and where conditions - these are required for reversal job scheduling.
- The framework validates that these indexes exist when scheduling reversal jobs.
- Users can't schedule reversal jobs if these indexes are missing.
Add fields to BI entities via extensions
Additional fields that are added to live tables must be added to the corresponding BI entities. The following requirements are needed for the BI entities:
- Follow the standard entity creation process: Building an entity.
- Include all fields from the source table.
- Enable change tracking and rowversion support - critical:
- Archive and LTR require change tracking on entities.
- Enable rowversion support on the entity.
- Follow: Entity change tracking.
Refresh the virtual entity in Dataverse
The customized business entity must be refreshed in Dataverse to archive data in the Dataverse long-term retention store.
Add indexes to source tables for archive criteria
Archive scenarios require specific indexes on source (live) tables for optimal performance and proper validation.
Index structure requirements
For root or parent tables requirements:
- Include all fields used in WHERE conditions for this table.
- Recommended: Place the primary segregation field (for example,
DataAreaId,Ledger) as the first field if used. - Add as included columns (not index fields):
RecId(only if table doesn't use RecId as clustered key)SysRowVersionSysDataStateCode
Example (Root table with DataAreaId, LoadId, CreatedDateTime, LoadStatus in WHERE conditions):
<AxTableIndex>
<Name>ArchiveCriteriaIdx</Name>
<Fields>
<AxTableIndexField>
<DataField>DataAreaId</DataField><!-- Used in WHERE condition -->
</AxTableIndexField>
<AxTableIndexField>
<DataField>LoadId</DataField><!-- Used in WHERE condition -->
</AxTableIndexField>
<AxTableIndexField>
<DataField>CreatedDateTime</DataField>
</AxTableIndexField>
<AxTableIndexField>
<DataField>LoadStatus</DataField>
</AxTableIndexField>
</Fields>
<IncludedColumns>
<AxTableIndexIncludedColumn>
<DataField>RecId</DataField>
</AxTableIndexIncludedColumn>
<AxTableIndexIncludedColumn>
<DataField>SysRowVersion</DataField>
</AxTableIndexIncludedColumn>
<AxTableIndexIncludedColumn>
<DataField>SysDataStateCode</DataField>
</AxTableIndexIncludedColumn>
</IncludedColumns>
</AxTableIndex>
For child tables:
- Include all fields used in JOIN conditions to the parent table.
- Include all fields used in WHERE conditions for this table.
- Recommended: Place the primary segregation field (for example,
DataAreaId,Ledger) as the first field if used. - Add as included columns (not index fields):
RecId(only if table doesn't use RecId as clustered key)SysRowVersionSysDataStateCode
Example (Child table with DataAreaId in WHERE and LoadId in JOIN):
<AxTableIndex>
<Name>ArchiveCriteriaIdx</Name>
<Fields>
<AxTableIndexField>
<DataField>DataAreaId</DataField><!-- Used in WHERE condition -->
</AxTableIndexField>
<AxTableIndexField>
<DataField>LoadId</DataField><!-- Used in JOIN to parent -->
</AxTableIndexField>
</Fields>
<IncludedColumns>
<AxTableIndexIncludedColumn>
<DataField>RecId</DataField>
</AxTableIndexIncludedColumn>
<AxTableIndexIncludedColumn>
<DataField>SysRowVersion</DataField>
</AxTableIndexIncludedColumn>
<AxTableIndexIncludedColumn>
<DataField>SysDataStateCode</DataField>
</AxTableIndexIncludedColumn>
</IncludedColumns>
</AxTableIndex>
Important
These indexes are added to SOURCE (live) tables, NOT to history tables.
Add new tables to the archive scenario
Additional tables can be included in the archive scenario if they have a direct or indirect relationship with the main live table.
To create a history table that corresponds to the live table in the archive scope, follow these steps:
- Create a new history table that mirrors all fields from the corresponding live table, including all metadata properties on the live table. See the column exclusion rule earlier in this article.
- Confirm that fields used in your archive scenario's join and where conditions are present.
- Don't mirror indexes from the live table in the history table. For most history tables, a clustered index on the
RecIdcolumn is sufficient. - Add indexes on criteria fields that are required for reversal jobs - include fields used in archive criteria such as date ranges, status fields, etc.
- Create additional indexes to improve query performance as required and to maintain foreign key relationships.
- Extend the
ArchiveAutomationJobRequestCreatorclass for a scenario to add the new table to archive table chart.
Code example
The following example shows how to customize the General ledger archive job request creator class to add a new table.
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::constructFromArchiveJobPostRequest(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
DictTable generalJournalAccountEntryTable = new DictTable(tableNum(GeneralJournalAccountEntry));
str generalJournalAccountEntryTableName = generalJournalAccountEntryTable.name(DbBackend::Sql);
DictTable newMyNewGeneralLedgerTable = new DictTable(tableNum(MyNewGeneralLedgerTable));
str newMyNewGeneralLedgerTableName = newMyNewGeneralLedgerTable.name(DbBackend::Sql);
DictTable newMyNewGeneralLedgerTableHistory = new DictTable(tableNum(MyNewGeneralLedgerTableHistory));
str newMyNewGeneralLedgerTableHistoryName = newMyNewGeneralLedgerTableHistory.name(DbBackend::Sql);
ArchiveServiceSourceTableConfiguration myNewGeneralLedgerTableSourceTable =
ArchiveServiceSourceTableConfiguration::newForSourceTable(
newMyNewGeneralLedgerTableName,
newMyNewGeneralLedgerTableHistoryName,
tableStr(MyNewGeneralLedgerTableBiEntity));
// Add parent table
myNewGeneralLedgerTableSourceTable.parmParentSourceTableName(generalJournalAccountEntryTableName);
builder.addSourceTableForLongTermRetention(myNewGeneralLedgerTableSourceTable)
.addJoinCondition(newMyNewGeneralLedgerTableName,
newMyNewGeneralLedgerTable.fieldName(fieldNum(MyNewGeneralLedgerTable, GeneralJournalAccountEntryRecId), DbBackend::Sql),
generalJournalAccountEntryTable.fieldName(fieldNum(GeneralJournalAccountEntry, RecId), DbBackend::Sql));
return builder.finalizeArchiveJobPostRequest();
}
}
Setting the Job Criteria Key (Recommended)
The job criteria key identifies the scope or partition of an archive job, allowing the Dataverse scheduler to run multiple archive jobs in parallel for different partitions (typically different legal entities or ledgers). Without a job criteria key, archive jobs may be processed sequentially, impacting performance.
Common values
- DataAreaId - Legal entity identifier (for example, "USMF", "DEMF") for most archive scenarios.
- Ledger RecId - Ledger identifier (converted to string) for ledger-specific archive jobs.
- Custom partition key - Any field that represents a logical partition in your scenario.
How to set job criteria key
Use the setJobCriteriaKey() method on the ArchiveServiceArchiveJobPostRequestBuilder.
Example - Sales order archive using DataAreaId
private ArchiveJobPostRequest configurePostRequestWithSalesOrderEntities(
ArchiveJobPostRequest _postRequest,
SalesOrderArchiveTrans _archiveTrans)
{
var builder = ArchiveServiceArchiveJobPostRequestBuilder::constructFromArchiveJobPostRequest(_postRequest);
// Set job criteria key - typically the DataAreaId for sales orders
if (strLen(_archiveTrans.DataAreaId) > 0)
{
builder.setJobCriteriaKey(_archiveTrans.DataAreaId);
}
// Build root source for SalesTable
builder.addSourceTableForLongTermRetention(
this.newSourceTableConfiguration(
tableStr(SalesTable),
tableStr(SalesTableHistory),
tableStr(mserp_salestablebiEntity)))
.addWhereCondition(
fieldStr(SalesTable, DataAreaId),
ArchiveServiceOperator::Equals,
_archiveTrans.DataAreaId);
// ... additional configuration
return builder.finalizeArchiveJobPostRequest();
}
Example 2: General Ledger Archive (Using Ledger RecId)
private ArchiveJobPostRequest configurePostRequestWithGeneralLedgerEntities(
ArchiveJobPostRequest _postRequest,
LedgerArchiveTrans _archiveTrans)
{
var builder = ArchiveServiceArchiveJobPostRequestBuilder::constructFromArchiveJobPostRequest(_postRequest);
// Set job criteria key - use Ledger RecId as the partitioning key for general ledger
if (_archiveTrans.Ledger > 0)
{
builder.setJobCriteriaKey(int642Str(_archiveTrans.Ledger));
}
// Build root source for GeneralJournalEntry
builder.addSourceTableForLongTermRetention(
this.newSourceTableConfiguration(
tableStr(GeneralJournalEntry),
tableStr(GeneralJournalEntryHistory),
tableStr(mserp_generaljournalentrybiEntity)))
.addWhereCondition(
fieldStr(GeneralJournalEntry, Ledger),
ArchiveServiceOperator::Equals,
_archiveTrans.Ledger);
// ... additional configuration
return builder.finalizeArchiveJobPostRequest();
}
Best practices
- Always include a conditional check** before calling
setJobCriteriaKey()to ensure the value exists. - Convert non-string values** to string (for example, use
int642Str()for Int64 values like Ledger RecId). - Add a comment explaining what partition key you're using and why.
- Call setJobCriteriaKey()** early in your builder chain, before adding source tables.
Conditions for a valid job criteria key
A value is suitable as a job criteria key if it meets these criteria:
- Represents a logical partition - The value should identify a distinct partition of your data (for example, legal entity, ledger, customer, project).
- Consistent within a job - All records processed by the archive job should share the same criteria key value.
- String-compatible - Must be convertible to string (use
int642Str(),int2Str(), etc. for numeric values). - Present in root table - The field should exist in your root source table's where conditions.
- Non-null and non-empty - Always validate the value exists before passing it to
setJobCriteriaKey().
What is a job criteria key
The job criteria key is fundamentally a partitioning mechanism that ensures no overlapping records between concurrent archive jobs. When choosing a value for the job criteria key, it must satisfy this critical condition: when running multiple archive jobs within the same scenario, sales orders, each job with a different job criteria key must process distinct sets of records with zero overlap.
For example, if you run two sales order archive jobs simultaneously. One with job criteria key "USMF" and another with "DEMF". The records archived by the USMF job must not overlap with records archived by the DEMF job. This is why DataAreaId is the ideal choice for most scenarios: it naturally partitions data by legal entity, guaranteeing no overlap.
Creating a custom Dataverse solution for archive
ISVs, partners, and customers need to create and manage their own Dataverse solutions for their custom archival scenarios, which will be installed and managed separately from the official Microsoft Archival package.
Create a new Dataverse solution
- Navigate to Power Apps
- Select your target environment (must have Long-Term Retention enabled).
- Go to Solutions > New solution.
- Provide solution details:
- Display name:
[Your Company] Archive Solution. For example, Contoso WHS Archive Solution. - Name: Technical name. For example, ContosoWHSArchive.
- Publisher: Select or create a custom publisher for your organization.
- Version: Start with 1.0.0.0.
- Display name:
- Click Create.
Add virtual entities to your solution
- Open your newly created solution.
- Click Add existing > Table > Virtual table.
- Search for and select the BI entities you created in Dynamics 365 finance and operations for your archive scenario.
- Add all entities related to your archive scope.
- Ensure each entity has:
- Change tracking enabled
- Rowversion support configured
- All required fields from source tables
Configure table settings for long-term retention
For each virtual entity added:
- Select the table in your solution.
- Go to Settings > Advanced options.
- Enable Track changes.
- Under Data retention, configure:
- Enable Long-term retain this table
- Set retention policies as needed
- Save changes.
Security permissions
The Archive service uses a first-party application user to perform archival operations, including deleting archived records from active tables. Archive service first-party application permissions are handled automatically.
Important
The Archive service first-party application user is safe listed for archive operations in Dataverse. This means you don't need to configure any custom security roles or permissions in Dataverse for the Archive service to perform delete operations on your archive entities.
- The Archive service first-party application user automatically has the required delete permissions for all virtual entities published from Dynamics 365 finance and operations.
- No manual security role configuration is required in Power Platform Admin Center (PPAC) for the Archive service.
- Delete operations on root entities automatically cascade to child entities through Dataverse relationship configurations.
Dynamics 365 finance and operations end user required permissions
End users who create and manage archive jobs in Dynamics 365 finance and operations must have System Administrator role in Dynamics 365 finance and operations. The safe listing mentioned above only applies to the Archive service application performing automated delete operations, not to end users.
Your action - nothing is required for Archive service permissions and confirm:
- Your virtual entities are properly published from Dynamics 365 finance and operations with the correct relationships configured.
- End users have System Administrator role in Dynamics 365 finance and operations to create and manage archive jobs.
Export and package your solution
- In your solution, click Export.
- Choose Managed solution (recommended for production deployments).
- Click Next and wait for the export to complete.
- Download the solution file (
.zip).
Deploy to target environments
- Navigate to the target environment in Power Apps.
- Go to Solutions > Import.
- Upload your solution
.zipfile. - Follow the import wizard.
Version management and updates
When you need to update your archive solution:
- Increment the solution version (for example, 1.0.0.0 → 1.1.0.0).
- Make necessary changes to entities in your Dynamics 365 finance and operations environment.
- Synchronize virtual entities in Dataverse.
- Export the solution again as managed.
- Import the updated solution to target environments.
Considerations for external solutions
- Independent lifecycle - Your custom archive solution operates independently from Microsoft's official Archive package.
- No internal dependencies - Don't reference or depend on Microsoft internal packages.
- Publisher prefix - Use your own publisher prefix for all customizations.
- Field requirements - Ensure all Dynamics 365 finance and operations source tables have
DataAreaIdandPartitionfields. - Index requirements - Add proper indexes to source tables with
DataAreaIdas first key column. - History table indexes - Add indexes on criteria fields to support reversal job scheduling.
- Testing - Test thoroughly in sandbox/dev environments before production deployment.
- Documentation - Maintain documentation of your solution components and deployment process.
- Compatibility - Ensure compatibility with Archive framework version installed in your Dynamics 365 finance and operations environment.
Integration with archive framework
Your custom solution integrates with the Archive framework through:
- Virtual entities - The Archive framework discovers and uses your virtual entities automatically when referenced in your job contract.
- Type registration - Your X++ type registration (created in F&O) references your entities.
- Job contract - Your
ArchiveAutomationJobRequestCreatorclasses reference your BI entities by name. - No code changes needed - The Archive framework doesn't require modifications to recognize external solutions.
Troubleshooting
| Issue | Solution |
|---|---|
| Reversal job scheduling fails/blocked | Ensure all history tables have indexes on criteria fields (date ranges, status fields, etc.). The framework validates these indexes exist before allowing reversal job scheduling. |
| Archive job fails with field validation errors | Verify that all source and history tables have required fields: DataAreaId and Partition. |
| Archive job fails with index validation errors | Ensure source tables have proper indexes with DataAreaId as the first key column. Include RecId, Partition, SysRowVersion, and SysDataStateCode as included columns. |
| Entities not appearing in Dataverse | Ensure virtual entities are properly published from Dynamics 365 finance and operations and the environment has Virtual Entity provider configured |
| Long-term retention not available | Verify the environment is configured as a managed environment and LTR is enabled. |
| Archive job fails with entity errors | Check that entity names in X++ code exactly match the Dataverse entity names. |
| Permission/security errors | The Archive Service is safe listed - no configuration needed. Ensure end users have System Administrator role in Dynamics 365 finance and operations. |
| User can't create archive jobs | Ensure the end user has System Administrator role in Dynamics 365 finance and operations. |
| Version conflicts | Use semantic versioning and test compatibility before upgrading. |
| Import failures | Ensure all dependencies (Archive Service package, Virtual Entity provider) are installed first. |
Partner solution structure example
ContosoWHSArchiveSolution (Managed)
├── Tables (Virtual Entities)
│ ├── mserp_whsloadtableentity (Change Tracking: On, LTR: Enabled)
│ ├── mserp_whsloadlineentity (Change Tracking: On, LTR: Enabled)
│ ├── mserp_whsshipmenttableentity (Change Tracking: On, LTR: Enabled)
│ └── ... (additional entities)
├── Publisher: Contoso (prefix: contoso_)
├── Dependencies
│ └── Archive Service (msdyn_ArchiveService)
└── Version: 1.0.0.0
Dynamics 365 finance and operations table names in live, history, and Dataverse-managed data lake tables
| Scenario | Live table | History table | BI entity | Dataverse-managed data lake table |
|---|---|---|---|---|
| Finance General ledger | GENERALJOURNALACCOUNTENTRY | GENERALJOURNALACCOUNTENTRYHISTORY | GeneraljournalaccountentryBiEntity | mserp_GeneraljournalaccountentryBiEntity |
| GENERALJOURNALACCOUNTENTRY_W | GENERALJOURNALACCOUNTENTRYHISTORY_W | GeneraljournalaccountentrywBiEntity | mserp_GeneraljournalaccountentrywBiEntity | |
| GENERALJOURNALENTRY | GENERALJOURNALENTRYHISTORY | GeneraljournalentryBiEntity | 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 Sales order | 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 Inventory transaction | INVENTTRANSARCHIVE | INVENTTRANSARCHIVEHISTORY | InventtransarchiveBiEntity | mserp_InventTransArchiveBiEntity |
| Supply Chain Management Inventory Journal | 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 Tax Trans | 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 | |
| Commerce transaction | RetailTransactionTable | RetailTransactionTableHistory | RetailTransactionTableBIEntity | mserp_RetailTransactionTableBIEntity |
| RetailTransactionCashManagementTrans | RetailTransactionCashManagementTransHistory | RetailTransactionCashManagementTransBIEntity | mserp_RetailTransactionCashManagementTransBIEntity | |
| RetailTransactionFiscalCustomer | RetailTransactionFiscalCustomerHistory | RetailTransactionFiscalCustomerBIEntity | mserp_RetailTransactionFiscalCustomerBIEntity | |
| RetailTransactionSupplementaryInvoice | RetailTransactionSupplementaryInvoiceHistory | RetailTransactionSupplementaryInvoiceBIEntity | mserp_RetailTransactionSupplementaryInvoiceBIEntity | |
| RetailTransactionTable_RU | RetailTransactionTable_RUHistory | RetailTransactionTable_RUBIEntity | mserp_RetailTransactionTable_RUBIEntity | |
| RetailTransactionBankedTenderTrans | RetailTransactionBankedTenderTransHistory | RetailTransactionBankedTenderTransBIEntity | mserp_RetailTransactionBankedTenderTransBIEntity | |
| RetailTransactionValidationError | RetailTransactionValidationErrorHistory | RetailTransactionValidationErrorBIEntity | mserp_RetailTransactionValidationErrorBIEntity | |
| RetailTransactionTenderDeclarationTrans | RetailTransactionTenderDeclarationTransHistory | RetailTransactionTenderDeclarationTransBIEntity | mserp_RetailTransactionTenderDeclarationTransBIEntity | |
| RetailTransactionTaxMeasure | RetailTransactionTaxMeasureHistory | RetailTransactionTaxMeasureBIEntity | mserp_RetailTransactionTaxMeasureBIEntity | |
| RetailTransactionSalesTrans | RetailTransactionSalesTransHistory | RetailTransactionSalesTransBIEntity | mserp_RetailTransactionSalesTransBIEntity | |
| RetailTransactionPaymentTrans | RetailTransactionPaymentTransHistory | RetailTransactionPaymentTransBIEntity | mserp_RetailTransactionPaymentTransBIEntity | |
| RetailTransactionPaymentTrans_BR | RetailTransactionPaymentTrans_BRHistory | RetailTransactionPaymentTrans_BRBIEntity | mserp_RetailTransactionPaymentTrans_BRBIEntity | |
| RetailTransactionSafeTenderTrans | RetailTransactionSafeTenderTransHistory | RetailTransactionSafeTenderTransBIEntity | mserp_RetailTransactionSafeTenderTransBIEntity | |
| RetailTransactionPaymentRefundableAmounts | RetailTransactionPaymentRefundableAmountsHistory | RetailTransactionPaymentRefundableAmountsBIEntity | mserp_RetailTransactionPaymentRefundableAmountsBIEntity | |
| RetailTransactionAdditionalAddressTrans | RetailTransactionAdditionalAddressTransHistory | RetailTransactionAdditionalAddressTransBIEntity | mserp_RetailTransactionAdditionalAddressTransBIEntity | |
| RetailTransactionAddressTrans | RetailTransactionAddressTransHistory | RetailTransactionAddressTransBIEntity | mserp_RetailTransactionAddressTransBIEntity | |
| RetailTransactionAffiliationTrans | RetailTransactionAffiliationTransHistory | RetailTransactionAffiliationTransBIEntity | mserp_RetailTransactionAffiliationTransBIEntity | |
| RetailTransactionAttributeTrans | RetailTransactionAttributeTransHistory | RetailTransactionAttributeTransBIEntity | mserp_RetailTransactionAttributeTransBIEntity | |
| RetailTransactionChargeTaxMeasure | RetailTransactionChargeTaxMeasureHistory | RetailTransactionChargeTaxMeasureBIEntity | mserp_RetailTransactionChargeTaxMeasureBIEntity | |
| RetailTransactionChargeTaxTrans | RetailTransactionChargeTaxTransHistory | RetailTransactionChargeTaxTransBIEntity | mserp_RetailTransactionChargeTaxTransBIEntity | |
| RetailTransactionChargeTaxTransGTE | RetailTransactionChargeTaxTransGTEHistory | RetailTransactionChargeTaxTransGTEBIEntity | mserp_RetailTransactionChargeTaxTransGTEBIEntity | |
| RetailTransactionCustomerAccountDepositTrans | RetailTransactionCustomerAccountDepositTransHistory | RetailTransactionCustomerAccountDepositTransBIEntity | mserp_RetailTransactionCustomerAccountDepositTransBIEntity | |
| RetailTransactionDiscountTrans | RetailTransactionDiscountTransHistory | RetailTransactionDiscountTransBIEntity | mserp_RetailTransactionDiscountTransBIEntity | |
| RetailTransactionFiscalTrans | RetailTransactionFiscalTransHistory | RetailTransactionFiscalTransBIEntity | mserp_RetailTransactionFiscalTransBIEntity | |
| RetailTransactionFiscalTransExtendedData | RetailTransactionFiscalTransExtendedDataHistory | RetailTransactionFiscalTransExtendedDataBIEntity | mserp_RetailTransactionFiscalTransExtendedDataBIEntity | |
| RetailTransactionIncomeExpenseTrans | RetailTransactionIncomeExpenseTransHistory | RetailTransactionIncomeExpenseTransBIEntity | mserp_RetailTransactionIncomeExpenseTransBIEntity | |
| RetailTransactionInfocodeTrans | RetailTransactionInfocodeTransHistory | RetailTransactionInfocodeTransBIEntity | mserp_RetailTransactionInfocodeTransBIEntity | |
| RetailTransactionKitsDisassemblyTrans | RetailTransactionKitsDisassemblyTransHistory | RetailTransactionKitsDisassemblyTransBIEntity | mserp_RetailTransactionKitsDisassemblyTransBIEntity | |
| RetailTransactionLoyaltyRewardPointTrans | RetailTransactionLoyaltyRewardPointTransHistory | RetailTransactionLoyaltyRewardPointTransBIEntity | mserp_RetailTransactionLoyaltyRewardPointTransBIEntity | |
| RetailTransactionMarkupTrans | RetailTransactionMarkupTransHistory | RetailTransactionMarkupTransBIEntity | mserp_RetailTransactionMarkupTransBIEntity | |
| RetailTransactionNoteTrans | RetailTransactionNoteTransHistory | RetailTransactionNoteTransBIEntity | mserp_RetailTransactionNoteTransBIEntity | |
| RetailTransactionOrderInvoiceTrans | RetailTransactionOrderInvoiceTransHistory | RetailTransactionOrderInvoiceTransBIEntity | mserp_RetailTransactionOrderInvoiceTransBIEntity | |
| RetailTransactionTaxTrans_IN | RetailTransactionTaxTrans_INHistory | RetailTransactionTaxTrans_INBIEntity | mserp_RetailTransactionTaxTrans_INBIEntity | |
| RetailTransactionTaxTrans | RetailTransactionTaxTransHistory | RetailTransactionTaxTransBIEntity | mserp_RetailTransactionTaxTransBIEntity | |
| RetailTransactionTaxTransGTE | RetailTransactionTaxTransGTEHistory | RetailTransactionTaxTransGTEBIEntity | mserp_RetailTransactionTaxTransGTEBIEntity | |
| RetailEodStatementControllerLog | RetailEodStatementControllerLogHistory | RetailEodStatementControllerLogBIEntity | mserp_RetailEodStatementControllerLogBIEntity | |
| RetailEodStatementEventLog | RetailEodStatementEventLogHistory | RetailEodStatementEventLogBIEntity | mserp_RetailEodStatementEventLogBIEntity | |
| RetailEodTransactionAggregationHeader | RetailEodTransactionAggregationHeaderHistory | RetailEodTransactionAggregationHeaderBIEntity | mserp_RetailEodTransactionAggregationHeaderBIEntity | |
| RetailEodTransactionAggregationTrans | RetailEodTransactionAggregationTransHistory | RetailEodTransactionAggregationTransBIEntity | mserp_RetailEodTransactionAggregationTransBIEntity | |
| RetailEodTransactionError | RetailEodTransactionErrorHistory | RetailEodTransactionErrorBIEntity | mserp_RetailEodTransactionErrorBIEntity | |
| RetailEodTransactionBankedTenderTrans | RetailEodTransactionBankedTenderTransHistory | RetailEodTransactionBankedTenderTransBIEntity | mserp_RetailEodTransactionBankedTenderTransBIEntity | |
| RetailEodTransactionIncomeExpenseTrans | RetailEodTransactionIncomeExpenseTransHistory | RetailEodTransactionIncomeExpenseTransBIEntity | mserp_RetailEodTransactionIncomeExpenseTransBIEntity | |
| RetailEodTransactionInfocodeTrans | RetailEodTransactionInfocodeTransHistory | RetailEodTransactionInfocodeTransBIEntity | mserp_RetailEodTransactionInfocodeTransBIEntity | |
| RetailEodTransactionOrderInvoiceTrans | RetailEodTransactionOrderInvoiceTransHistory | RetailEodTransactionOrderInvoiceTransBIEntity | mserp_RetailEodTransactionOrderInvoiceTransBIEntity | |
| RetailEodTransactionPaymentTrans | RetailEodTransactionPaymentTransHistory | RetailEodTransactionPaymentTransBIEntity | mserp_RetailEodTransactionPaymentTransBIEntity | |
| RetailEodTransactionSafeTenderTrans | RetailEodTransactionSafeTenderTransHistory | RetailEodTransactionSafeTenderTransBIEntity | mserp_RetailEodTransactionSafeTenderTransBIEntity | |
| RetailEodTransactionSalesTrans | RetailEodTransactionSalesTransHistory | RetailEodTransactionSalesTransBIEntity | mserp_RetailEodTransactionSalesTransBIEntity | |
| RetailEodTransactionTable | RetailEodTransactionTableHistory | RetailEodTransactionTableBIEntity | mserp_RetailEodTransactionTableBIEntity | |
| RetailEodTransactionTenderDeclarationTrans | RetailEodTransactionTenderDeclarationTransHistory | RetailEodTransactionTenderDeclarationTransBIEntity | mserp_RetailEodTransactionTenderDeclarationTransBIEntity | |
| RetailStatementJour | RetailStatementJourHistory | RetailStatementJourBIEntity | mserp_RetailStatementJourBIEntity | |
| RetailStatementTrans | RetailStatementTransHistory | RetailStatementTransBIEntity | mserp_RetailStatementTransBIEntity | |
| RetailStatementVoucher | RetailStatementVoucherHistory | RetailStatementVoucherBIEntity | mserp_RetailStatementVoucherBIEntity |