Business Need
A quote copy solution has been implemented in Dynamics 365 Sales to support high-volume business operations. During a quote copy operation, approximately 5,000 quote detail records may be processed and copied through a Dataverse Custom Action (reddt_CreateQuoteProductForSite) invoked via the Dataverse Web API.
The business requires a one-to-one relationship between the API request and the resulting record creation. Each successful Custom Action invocation should create exactly one quotedetail record. Any duplicate creation results in inaccurate quote data, requires additional validation and manual cleanup, and reduces confidence in the reliability of the quote copy process.
Reproduction Scenario
Execute a quote copy operation that processes approximately 5,000 quote detail records.
An Azure Durable Function invokes the Dataverse Custom Action reddt_CreateQuoteProductForSite through the Dynamics 365 Web API.
The Custom Action plugin creates a new quotedetail record.
The majority of executions complete successfully and create a single record as expected.
Intermittently, a small number of records are duplicated, even though:
-Only a single API request is observed.
-The Custom Action returns a successful response.
-No errors or exceptions are returned to the calling application.
-No failures are reported in Plugin Trace Logs.
When Plugin Trace Logging is configured at the Information level, portions of the plugin execution trace appear to be partially duplicated during affected executions, indicating that part of the processing may have been executed more than once.
Additionally, the behavior has been observed when invoking the Custom Action from different clients:
A TypeScript Azure Durable Function using the Dynamics 365 Web API.
Browser-based JavaScript using the same Dynamics 365 Web API endpoint.
This suggests the behavior is not specific to a particular client implementation.
Expected Result
For every successful execution of the Custom Action:
The Custom Action should execute exactly once.
One quotedetail record should be created.
A single API request should result in a single completed operation.
Actual Result
In rare and intermittent cases:
Duplicate quotedetail records are created for the same operation.
The API request still returns a successful response.
No errors, exceptions, or retry notifications are returned to the caller.
The duplicate behavior is only identifiable through Plugin Trace Logs, where portions of the execution trace appear duplicated.
Current Findings
The implementation follows the documented approach for invoking Dataverse Custom Actions through the Web API.
The issue has been observed in both DEV and UAT environments.
The solution has been running successfully in production-like scenarios for approximately one year.
The issue becomes noticeable primarily during high-volume processing scenarios.
Azure Function logs do not indicate duplicate activity execution.
Application Insights does not show evidence of duplicate API requests.
The Custom Action consistently returns a successful response.
Duplicate behavior is only observable in Dataverse Plugin Trace Logs.
The issue occurs approximately once every 5,000 executions.
No root cause has been identified at this stage.
Request:
Could you please review this scenario and advise whether:
This behavior is a known platform limitation or an expected behavior under high-volume execution scenarios.
There are any internal Dataverse processing or execution mechanisms that could result in a Custom Action being processed more than once despite a single successful API request.
Additional platform diagnostics or telemetry are available to help identify the source of the duplicate execution.
If this behavior is not expected, could it be evaluated for a product fix, reliability enhancement, or future platform improvement to provide stronger guarantees against unintended duplicate execution of Dataverse Custom Actions, particularly in high-volume processing scenarios?

Report
All responses (
Answers (