public async Task PublishEvent(string eventName, string eventKey, object eventData, DateTime?effectiveDate = null)
        {
            _logger.LogDebug("Creating event {0} {1}", eventName, eventKey);

            Event evt = new Event();

            evt.EventTime = effectiveDate.HasValue
                ? effectiveDate.Value.ToUniversalTime()
                : DateTime.Now.ToUniversalTime();
            evt.EventData   = eventData;
            evt.EventKey    = eventKey;
            evt.EventName   = eventName;
            evt.IsProcessed = false;

            string eventId = await _persistenceStore.CreateEvent(evt);

            await _queueProvider.QueueWork(eventId, QueueType.Event);
        }