Non c'è un buon modo per farlo. Poiché i tuoi dati sono suddivisi su più microservizi, devi unire manualmente questi dati. Quindi ci deve essere una parte di codice come:
def find_unconfigured_users():
for user in B.all_users():
if A.has_configured_user(user):
yield user
Questo sarà noioso e lento, ma poiché stai usando i microservizi non hai una scelta ragionevole. (La scelta irragionevole sarebbe quella di accedere direttamente ai dati di B, senza passare attraverso l'interfaccia del microservizio.)
Dove questa funzionalità dovrebbe vivere dipende ... probabilmente, questo dovrebbe essere parte della stessa Microservice A, cioè parte del servizio che si occupa degli utenti configurati.
Quando i dati vengono suddivisi in questo modo su più microservizi, questo potrebbe essere un male necessario o potrebbe essere un'indicazione di un problema più profondo. Domain-Driven Design ha il concetto di un contesto limitato - una parte autonoma del dominio del problema che il tuo sistema software sta tentando di risolvere. Un contesto limitato non dovrebbe essere suddiviso su più microservizi!
Si potrebbe voler controllare quale contesto limitato a cui gli aspetti di un utente appartengono. Perché è necessario gestire utenti configurati e non configurati e perché è distinto dagli utenti in generale? È legittimo se diversi contesti limitati hanno concetti diversi ma correlati di un "Utente", ma devi essere chiaro in che modo si relazionano. Qui, sembra che un'entità Utente sia effettivamente condivisa in diversi contesti, e quindi causando problemi. Forse, la soluzione potrebbe essere quella di includere la configurazione di un utente nel contesto utente principale (B).
"Lo schema è corretto" non è necessariamente un motivo buono per evitare di farlo, ma forse non può essere influenzato da te. Nessuna soluzione tecnologica sarà in grado di risolvere le disfunzioni organizzative, in particolare i microservizi. Dovrai quindi tornare a controllare noiosamente ogni utente, come nel frammento di codice sopra.