public async Task <DequeueResponse> Handle(DequeueCommand request, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(request, nameof(request)); _logger.LogProcess("Dequeue", _correlationContext.Id, request.MarketOperator); var bundleId = new Uuid(request.BundleId); var recipient = Guid.TryParse(request.MarketOperator, out var actorId) ? new ActorId(actorId) : new LegacyActorId(new GlobalLocationNumber(request.MarketOperator)); var(canAcknowledge, bundle) = await _marketOperatorDataDomainService .CanAcknowledgeAsync(recipient, bundleId) .ConfigureAwait(false); if (!canAcknowledge) { _logger.LogProcess("Dequeue", "Unacknowledged", _correlationContext.Id, request.MarketOperator, request.BundleId); return(new DequeueResponse(false)); } var marketOperator = recipient is LegacyActorId legacyActor #pragma warning disable CS0618 ? new LegacyActorIdDto(legacyActor.Value) #pragma warning restore CS0618 : new ActorIdDto(Guid.Parse(recipient.Value)); var dequeueNotification = new DequeueNotificationDto( bundle !.ProcessId.ToString(), marketOperator); await _dequeueNotificationSender .SendAsync(bundle.ProcessId.ToString(), dequeueNotification, (DomainOrigin)bundle.Origin) .ConfigureAwait(false); await _marketOperatorDataDomainService .AcknowledgeAsync(bundle) .ConfigureAwait(false); _logger.LogProcess("Dequeue", "Acknowledged", _correlationContext.Id, request.MarketOperator, request.BundleId); return(new DequeueResponse(true)); }