/// <summary>
        /// Runs the orchestration.
        /// </summary>
        /// <param name="runtimeContext">The runtime context.</param>
        /// <param name="taskContext">The task execution context.</param>
        /// <param name="orchestrationObject">The orchestration object.</param>
        /// <param name="resources">The resources.</param>
        /// <returns>The async <see cref="Task"/>.</returns>
        public async Task RunOrchestration(RuntimeContext runtimeContext, TaskContext taskContext, JObject orchestrationObject, IEnumerable<Resource> resources)
        {
            _logProvider = runtimeContext.LogProvider;
            _docsApiClient = new DocsApiClient(orchestrationObject["docsServiceUrl"].Value<string>());
            _orchestratorClient = new OrchestratorApiClient(orchestrationObject["orchestratorServiceUrl"].Value<string>());

            await Macro.SubstituteTokensInJObject(runtimeContext, taskContext, orchestrationObject);

            await SendConfiguration((JArray)orchestrationObject["configuration"]);
            await SendEnvironment((JObject)orchestrationObject["environment"], resources, taskContext.ResourcesProperties);
            LaunchRunbook(orchestrationObject["runbook"].Value<string>());
        }
        /// <summary>
        /// Runs the orchestration.
        /// </summary>
        /// <param name="runtimeContext">The runtime context.</param>
        /// <param name="taskContext">The task execution context.</param>
        /// <param name="orchestrationObject">The orchestration object.</param>
        /// <param name="resources">The resources.</param>
        /// <returns>The async <see cref="Task"/>.</returns>
        public async Task RunOrchestration(RuntimeContext runtimeContext, TaskContext taskContext, JObject orchestrationObject, IEnumerable <Resource> resources)
        {
            _logProvider        = runtimeContext.LogProvider;
            _docsApiClient      = new DocsApiClient(orchestrationObject["docsServiceUrl"].Value <string>());
            _orchestratorClient = new OrchestratorApiClient(orchestrationObject["orchestratorServiceUrl"].Value <string>());

            await Macro.SubstituteTokensInJObject(runtimeContext, taskContext, orchestrationObject);

            await SendConfiguration((JArray)orchestrationObject["configuration"]);
            await SendEnvironment((JObject)orchestrationObject["environment"], resources, taskContext.ResourcesProperties);

            LaunchRunbook(orchestrationObject["runbook"].Value <string>());
        }