public static async Task Activity([ActivityTrigger] string requestId)
        {
            file.WriteLine("\nactivity");
            file.WriteLine($"requestId    {requestId}");

            var telemetryClient = new TelemetryClient {
                InstrumentationKey = key
            };

            telemetryClient.Context.Cloud.RoleName = nameof(Activity);

            var requestTelemetry = new RequestTelemetry {
                Name = nameof(Activity)
            };

            requestTelemetry.Context.Operation.Id       = CorrelationHelper.GetOperationId(requestId);
            requestTelemetry.Context.Operation.ParentId = requestId;
            using (var operation = telemetryClient.StartOperation(requestTelemetry))
            {
                file.WriteLine($"telemetry id {operation.Telemetry.Id}");
                file.WriteLine($"telemetry context operation id {operation.Telemetry.Context.Operation.Id}");
                file.WriteLine($"telemetry context parent id    {operation.Telemetry.Context.Operation.ParentId}");

                await Task.Delay(3500);

                operation.Telemetry.Success = true;
            }
        }
        public static async Task Orchestrator([OrchestrationTrigger] DurableOrchestrationContextBase ctx)
        {
            var telemetryClient = new TelemetryClient {
                InstrumentationKey = key
            };

            telemetryClient.Context.Cloud.RoleName = nameof(Orchestrator);

            var requestId = ctx.GetInput <string>();

            if (!ctx.IsReplaying) // start operations
            {
                // request telemetry for the orchestrator's execution
                var requestTelemetry = new RequestTelemetry {
                    Name = nameof(Orchestrator)
                };
                requestTelemetry.Context.Operation.Id       = CorrelationHelper.GetOperationId(requestId);
                requestTelemetry.Context.Operation.ParentId = requestId;
                operation = telemetryClient.StartOperation(requestTelemetry);

                file.WriteLine("\norchestrator");
                file.WriteLine($"requestId {requestId}");
                file.WriteLine($"request telemetry id           {operation.Telemetry.Id}");
                file.WriteLine($"request telemetry parent id    {operation.Telemetry.Context.Operation.ParentId}");

                // dependency telemetry for the activity invocation
                var dependencyTelemetry = new DependencyTelemetry
                {
                    Name   = $"{nameof(Orchestrator)}_Dependency",
                    Target = "Activity",
                    Type   = "activity"
                };
                dependencyTelemetry.Context.Operation.Id       = CorrelationHelper.GetOperationId(requestId);
                dependencyTelemetry.Context.Operation.ParentId = operation.Telemetry.Id;
                dependencyOperation = telemetryClient.StartOperation(dependencyTelemetry);

                file.WriteLine($"dependency id        {dependencyOperation.Telemetry.Id}");
                file.WriteLine($"dependency parent id {dependencyOperation.Telemetry.Context.Operation.ParentId}");
            }

            await ctx.CallActivityAsync(nameof(Activity), dependencyOperation.Telemetry.Id);

            if (!ctx.IsReplaying)
            {
                file.WriteLine("\norchestrator");

                // stop dependency telemetry operation
                file.WriteLine($"stopping operation {dependencyOperation.Telemetry.Id}");

                dependencyOperation.Telemetry.Success = true;
                telemetryClient.StopOperation(dependencyOperation);

                // stop request telemetry operation
                file.WriteLine($"stopping operation {operation.Telemetry.Id}");

                operation.Telemetry.Success      = true;
                operation.Telemetry.ResponseCode = "200";
                telemetryClient.StopOperation(operation);

                file.Close();
            }
        }