genesyscloud-java-sdk handles the event stream fine until the external call drops. Step one, the Spring Boot service subscribes to /api/v2/interactions/events and catches the interaction.created payload. Step two, we parse the customerId field and fire a RestTemplate GET to our loyalty endpoint. If the response comes back with tier: "PLATINUM" and points > 5000, the config file maps that to skill: "priority-support". Step three, we construct a PUT request to /api/v2/routing/interactions/{interactionId} with the updated routingCriteria object. Honestly, it’s a mess when the external call drags. Step four covers the timeout handling. When the loyalty API hangs past 3 seconds, the fallback logic triggers but the SDK throws a 409 Conflict on the routing update because the interaction state already shifted to queued. Here is the mapping block that breaks: routingService.updateRoutingCriteria(interactionId, new Criteria().queueId(defaultQueue).priority(1)). The thread blocks on the initial PUT, then the retry logic fires a duplicate payload. We’ve tried adding RetryPolicy with exponential backoff, but the interaction API keeps rejecting the second call. The second PUT just hangs and the queue assignment never fires.