Dynamics CRM + Azure Function Timeouts on bulk update

156 Views Asked by At

I have an Azure function (Http triggered) which updates data in Dynamics CRM.

The data to be updated is beyond 100,000 so I have used the ExecuteTransation request and executing the requests in batches. However the Azure function times out after executing the first batch and it fails to process further records. What can I do to solve this?

Note: there is no webhook, since this is bulk update, I am directly calling the Azure function url to trigger it.

This is the code:

foreach (var item in list)
{
    var cust = new Entity("account");
    cust.Id = list.Id;
    cust["code] = 1;
    cust["description"] = "Test";

    requestsCollection.Entities.Add(cust);

    if (multipleRequestWithResults.Requests.Count == 1000)
    {
        ExecuteBulkUpdate(multipleRequestWithResults);
        requestsCollection = new EntityCollection();
    }
}

public void ExecuteBulkUpdate(EntityCollection requestsCollection)
{
    var requests = new ExecuteTransactionRequest
        {
            Requests = new OrganizationRequestCollection(),
            ReturnResponses = true
        };
}

foreach (var request in requestsCollection.Entities)
{ 
    UpdateRequest updateRequest = new UpdateRequest { Target = request };
    requests.Requests.Add(updateRequest);
}

try
{
    _serviceClient.Execute(requests);
}
catch (FaultException<OrganizationServiceFault> ex)
{
    _logger.LogInformation("Request failed for the {0} and the reason being: {1}",
                 ((ExecuteTransactionFault)(ex.Detail)).FaultedRequestIndex + 1, ex.Detail.Message);
    throw;
}

public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Function,"get","post", Route = "")] HttpRequestData req)
{
    // Call the bulk update from here
    return req.CreateResponse(HttpStatusCode.OK);
}
0

There are 0 best solutions below