private async Task SaveDeviceStatuses(IDictionary <string, DeploymentStatus> deviceStatuses, string deploymentId, string tenantId)
        {
            CosmosOperations storageClient = await CosmosOperations.GetClientAsync();

            var sql = CosmosOperations.GetDocumentsByCollectionId("CollectionId", string.Format(DeviceStatusesCollection, deploymentId));

            var existingDeviceStatuses = await storageClient.QueryAllDocumentsAsync(
                "pcs-storage",
                $"pcs-{tenantId}",
                this.DefaultQueryOptions,
                sql);

            if (existingDeviceStatuses != null && existingDeviceStatuses.Count > 0)
            {
                foreach (var item in existingDeviceStatuses)
                {
                    await storageClient.DeleteDocumentAsync(item.Id, this.GenerateCollectionLink(tenantId));
                }
            }

            if (deviceStatuses != null)
            {
                for (int i = 0; i < deviceStatuses.Count; i = i + DeviceStatusLength)
                {
                    var items = deviceStatuses.Skip(i).Take(DeviceStatusLength).ToDictionary(p => p.Key, p => p.Value);
                    var value = JsonConvert.SerializeObject(
                        new DeviceStatusServiceModel
                    {
                        DeviceStatuses = items,
                        DeploymentId   = deploymentId,
                    },
                        Formatting.Indented,
                        new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore,
                    });
                    await storageClient.SaveDocumentAsync(string.Format(DeviceStatusesCollection, deploymentId), Guid.NewGuid().ToString(), new ValueServiceModel()
                    {
                        Data = value
                    }, this.GenerateCollectionLink(tenantId));
                }
            }
        }