A C# console app already builds an OrganizationRequest for a custom API named contoso_RecalculateTerritories and sends it with IOrganizationService.Execute. The developer now wants Dataverse to process this same request in the background and return immediately. How should the developer change the code by using the SDK for .NET?
Select an answer to reveal the explanation.
Short Explanation
You don't rewrite the request; you put it in an envelope marked 'process later.' ExecuteBackgroundOperation is that envelope, and the original custom API request goes inside its Request parameter. Watch out for look-alike names: the async-sounding options either do something else or aren't for this.
Full Explanation
In the SDK for .NET, background processing is requested with the ExecuteBackgroundOperation message. The SDK does not yet ship strongly typed request and response classes for it, so the developer creates a generic OrganizationRequest with that message name, places the existing custom API request in its Request parameter, and optionally sets CallbackUri. The response returns BackgroundOperationId and Location, which the app uses to monitor or cancel the work. The wrapped message must be implemented as a custom API. ExecuteAsyncRequest is a different, older mechanism that accepts only three messages (ImportSolution, DeleteAndPromote and Merge), so it cannot queue a custom API; it is not how background operations are submitted. ExecuteMultiple with ReturnResponses set to false still runs synchronously; that setting only suppresses the response collection, and the call returns after all contained requests complete. The BypassBusinessLogicExecution parameter with CustomAsync tells Dataverse to skip custom asynchronous logic for a request; it does not change how the request itself is executed and would silently suppress logic the solution may need. Exam caveat: with the Web API, the equivalent is the Prefer: respond-async header on the custom API request rather than a wrapper message. Operational check: confirm the response contains a BackgroundOperationId and that a matching backgroundoperation row appears.