Изменить

Поделиться через


Archive customization

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:

  1. All fields from the live table must be present (except SysRowVersion and SysDataState).
  2. Ensure fields used in your archive scenario's join and where conditions are present.
  3. Create a clustered index on RecId.
  4. 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:

  1. Follow the standard entity creation process: Building an entity.
  2. Include all fields from the source table.
  3. 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:

  1. Include all fields used in WHERE conditions for this table.
  2. Recommended: Place the primary segregation field (for example, DataAreaId, Ledger) as the first field if used.
  3. Add as included columns (not index fields):
    • RecId (only if table doesn't use RecId as clustered key)
    • SysRowVersion
    • SysDataStateCode

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:

  1. Include all fields used in JOIN conditions to the parent table.
  2. Include all fields used in WHERE conditions for this table.
  3. Recommended: Place the primary segregation field (for example, DataAreaId, Ledger) as the first field if used.
  4. Add as included columns (not index fields):
    • RecId (only if table doesn't use RecId as clustered key)
    • SysRowVersion
    • SysDataStateCode

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:

  1. 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.
  2. Confirm that fields used in your archive scenario's join and where conditions are present.
  3. Don't mirror indexes from the live table in the history table. For most history tables, a clustered index on the RecId column is sufficient.
  4. Add indexes on criteria fields that are required for reversal jobs - include fields used in archive criteria such as date ranges, status fields, etc.
  5. Create additional indexes to improve query performance as required and to maintain foreign key relationships.
  6. Extend the ArchiveAutomationJobRequestCreator class 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();
    }
}

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

  1. Navigate to Power Apps
  2. Select your target environment (must have Long-Term Retention enabled).
  3. Go to Solutions > New solution.
  4. 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.
  5. Click Create.

Add virtual entities to your solution

  1. Open your newly created solution.
  2. Click Add existing > Table > Virtual table.
  3. Search for and select the BI entities you created in Dynamics 365 finance and operations for your archive scenario.
  4. Add all entities related to your archive scope.
  5. 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:

  1. Select the table in your solution.
  2. Go to Settings > Advanced options.
  3. Enable Track changes.
  4. Under Data retention, configure:
    • Enable Long-term retain this table
    • Set retention policies as needed
  5. 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

  1. In your solution, click Export.
  2. Choose Managed solution (recommended for production deployments).
  3. Click Next and wait for the export to complete.
  4. Download the solution file (.zip).

Deploy to target environments

  1. Navigate to the target environment in Power Apps.
  2. Go to Solutions > Import.
  3. Upload your solution .zip file.
  4. Follow the import wizard.

Version management and updates

When you need to update your archive solution:

  1. Increment the solution version (for example, 1.0.0.0 → 1.1.0.0).
  2. Make necessary changes to entities in your Dynamics 365 finance and operations environment.
  3. Synchronize virtual entities in Dataverse.
  4. Export the solution again as managed.
  5. 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 DataAreaId and Partition fields.
  • Index requirements - Add proper indexes to source tables with DataAreaId as 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 ArchiveAutomationJobRequestCreator classes 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