public async Task <ActionResult> CreateProduct([FromBody] Product product) { _applicationContext.Products.Add(product); var productCreatedEvent = new ProductCreatedIntegrationEvent(product); _integrationEventLogService.Save(productCreatedEvent); await _integrationContextEventService.SaveApplicationContextAndEventLogsContextChangesAsync(); await _integrationContextEventService.PublishEvent(productCreatedEvent); return(CreatedAtAction(nameof(GetById), new { id = product.Id }, null)); }