public async Task ProcessSingleUserAsync(Int32 workspaceArtifactID, Int32 jobArtifactID, ExportWorkerQueueRecord exportWorkerQueueRecord) { try { RaiseAndLogDebugMessage($"Processing a single user in export worker batch. [{nameof(exportWorkerQueueRecord.ArtifactId)}] = {exportWorkerQueueRecord.ArtifactId}"); kCura.Relativity.Client.DTOs.User userRDO = await ArtifactQueries.RetrieveUserAsync(RsapiApiOptions, RsapiRepositoryGroup.UserRepository, exportWorkerQueueRecord.ArtifactId); //query user Auth data LoginProfile userLoginProfile = await AuthenticationHelper.RetrieveExistingUserLoginProfileAsync(userRDO.ArtifactID); //query keywords and notes for user KeywordsNotesModel userKeywordsNotesModel = await SqlQueryHelper.RetrieveKeywordsAndNotesForUserAsync( eddsDbContext : AgentHelper.GetDBContext(-1), userArtifactId : userRDO.ArtifactID); //query groups user is part of IEnumerable <String> userGroupNameList = await QueryGroupsNamesUserIsPartOfAsync(userRDO); UserAdminObject userAdminObject = await ConvertUserResultToUserAdminObjectAsync(userRDO); //add keywords and notes, auth and groups data to UserAdminObject await AddKeywordsNotesAuthInfoAndGroupsToUserAdminObjectAsync(userAdminObject, userKeywordsNotesModel, userGroupNameList, userLoginProfile); //insert user data info into the export worker results table await InsertUserDataIntoExportWorkerResultsTableAsync(exportWorkerQueueRecord, userAdminObject); RaiseAndLogDebugMessage($"Processed a single user in export worker batch. [{nameof(exportWorkerQueueRecord.ArtifactId)}] = {exportWorkerQueueRecord.ArtifactId}"); } catch (Exception ex) { //create export job error record String details = ExceptionMessageFormatter.GetExceptionMessageIncludingAllInnerExceptions(ex); await CreateExportJobErrorRecordAsync(workspaceArtifactID, jobArtifactID, exportWorkerQueueRecord.ObjectType, Constant.Status.JobErrors.ERROR, details); } }