public static async Task RunOrchestration( [OrchestrationTrigger] IDurableOrchestrationContext functionContext, ILogger log) { if (functionContext is null) { throw new ArgumentNullException(nameof(functionContext)); } var command = functionContext.GetInput <ProviderProjectDeleteCommand>(); var commandResult = command.CreateResult(); var commandLog = functionContext.CreateReplaySafeLogger(log ?? NullLogger.Instance); using (log.BeginCommandScope(command)) { try { await functionContext .EnsureAuthorizedAsync() .ConfigureAwait(true); await functionContext .CallOperationAsync(nameof(ProjectDeleteActivity), command.Payload) .ConfigureAwait(true); commandResult.Result = new ProviderOutput { Properties = new Dictionary <string, string>() }; } catch (Exception exc) { commandResult ??= command.CreateResult(); commandResult.Errors.Add(exc); throw exc.AsSerializable(); } finally { var commandException = commandResult.Errors?.ToException(); if (commandException is null) { functionContext.SetCustomStatus($"Command succeeded", commandLog); } else { functionContext.SetCustomStatus($"Command failed: {commandException.Message}", commandLog, commandException); } functionContext.SetOutput(commandResult); } } }