public async Task <Integration> CreateIntegrationAsync(ProviderRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } IIntegrationSystemService integrationSystemService = _integrationSystemServices.GetService(request.Provider); ProviderResult creationResult = await integrationSystemService.CreateIntegrationAsync(request); Integration integration = await _integrationRepository.CreateIntegrationAsync( _operationContext.UserId, creationResult.Provider, creationResult.ProviderUserId, creationResult.Data); await _eventPublisher.PublishAsync(CreateIntegrationCreatedEvent(integration)); return(integration); }