public async Task HandleAsync(string eventPayload)
        {
            var @event = DeserializeEvent <VacancyClonedEvent>(eventPayload);

            try
            {
                _logger.LogInformation($"Processing {nameof(VacancyClonedEvent)} for vacancy: {{VacancyId}}", @event.VacancyId);

                await _client.AssignVacancyNumber(@event.VacancyId);

                _logger.LogInformation($"Finished Processing {nameof(VacancyClonedEvent)} for vacancy: {{VacancyId}}", @event.VacancyId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Unable to process {eventBody}", @event);
                throw;
            }
        }
        public async Task HandleAsync(string eventPayload)
        {
            var @event = DeserializeEvent <DraftVacancyUpdatedEvent>(eventPayload);

            try
            {
                _logger.LogInformation($"Processing {nameof(DraftVacancyUpdatedEvent)} for vacancy: {{VacancyId}}", @event.VacancyId);

                await _client.AssignVacancyNumber(@event.VacancyId);

                await _client.PatchTrainingProviderAsync(@event.VacancyId);

                await _client.EnsureVacancyIsGeocodedAsync(@event.VacancyId);

                _logger.LogInformation($"Finished Processing {nameof(DraftVacancyUpdatedEvent)} for vacancy: {{VacancyId}}", @event.VacancyId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Unable to process {eventBody}", @event);
                throw;
            }
        }