public async Task <IList <Audit> > ReadAuditsAsync(AuditQueryBatch queryBatch, int auditArtifactTypeId, IList <int> actionChoiceIds) { return(await TimeSpan.FromSeconds(1).RetryCall(3, this.logger, async() => { var queryStart = GetQueryStart(queryBatch); var queryRequest = new QueryRequest { Condition = this.dataGridConditionBuilder.BuildActionTimeframeCondition(actionChoiceIds.ToArray(), queryBatch.Query.StartTime, queryBatch.Query.EndTime), Fields = new List <FieldRef> { new FieldRef { Name = DataGridResourceConstants.DataGridFieldAuditId }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldUserId }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldAuditArtifactId }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldDetails }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldTimeStamp }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldAction }, new FieldRef { Name = DataGridResourceConstants.DataGridFieldExecutionTime } }, ObjectType = new ObjectTypeRef() { ArtifactTypeID = auditArtifactTypeId } }; var auditQueryOptions = new AuditQueryOptions { ReturnRawDetails = true }; // Get Audit details using (var auditManagerProxy = this.auditLogObjectManagerFactory.GetManager()) { try { var result = await auditManagerProxy.QueryAsync( queryBatch.Query.WorkspaceId, queryRequest, queryStart, queryBatch.Size, auditQueryOptions ); return this.dataGridResponseAuditMapper.ResponseToAudits(result, queryBatch.Query.WorkspaceId); } catch (Exception e) { if (e.Message.Contains("StatusCode: 404")) { this.logger.LogWarning( $"Endpoint not found when reading audits {e.Message} {this.DataGridServiceDetails(queryBatch.Query)}, retrying..."); throw new RetryException(e); } else { throw this.DataGridServiceException(e, queryBatch.Query, $"Failed to read audits Size: {queryBatch.Size}, Start: {queryBatch.Start} || queryStart: {queryStart}, QueryParam: {queryRequest.ToJson()}"); } } } })); }