Fonctionnement de la synchronisation

Le modèle proxy

L'app mobile ne parle jamais directement à l'annuaire. Chaque sync passe par les API routes RingSync, qui s'authentifient côté serveur et streament les résultats vers l'appareil :

  1. L'app crée un job de sync.
  2. L'app boucle en récupérant une page d'utilisateurs à la fois à l'aide d'un cursor (un delta link ou un next link).
  3. RingSync s'authentifie côté serveur (Graph client_credentials, ou un service account / token OAuth Google), appelle l'annuaire, et streame la page.
  4. L'app applique chaque page aux contacts natifs, rattachés à cet annuaire.
  5. L'app remonte le résultat par contact pour journalisation et enregistre le nouveau cursor.

Comme RingSync ne fait que relayer des pages, aucun contact n'est jamais stocké sur le serveur.

Déclenchement

  • Manuel (v1) — l'utilisateur tape sur une carte annuaire dans l'app mobile pour lancer une sync.
  • Planifié (v2) — une tâche planifiée configurable depuis le back office.
  • Webhook (v2, hors scope initial) — les change notifications de Microsoft Graph.
  • Première sync — aucun delta link n'existe, RingSync effectue donc une sync complète.
  • Syncs suivantes — le delta link est stocké sur l'appareil et backupé côté serveur, donc seuls les changements sont récupérés.
  • Sync restreinte par groupe — le fournisseur ne prend pas en charge de delta sur les requêtes par groupe ; RingSync fait un fetch complet et synthétise les suppressions pour les utilisateurs sortis du périmètre.
  • Changement de périmètre (all ↔ groups) — le delta link est réinitialisé automatiquement, forçant une sync complète.
Google n'a pas de delta

L'Admin SDK Directory API de Google Workspace n'a pas de delta. Les syncs Google sont toujours des fetchs complets ; l'appareil diffe contre sa map locale par annuaire pour détecter les suppressions.

Propagation des suppressions et wipe sélectif

  • Quand un utilisateur est supprimé ou désactivé dans l'annuaire, il est retourné comme supprimé (ou avec accountEnabled = false) ; l'appareil supprime le contact natif correspondant et journalise l'action.
  • Quand l'accès d'un utilisateur est retiré — désassigné dans Entra ID ou sorti du périmètre d'accès Google Workspace, ce que le pull en arrière-plan détecte en 15 minutes au plus — RingSync envoie une push notification data-only à l'appareil. L'appareil purge alors uniquement les contacts rattachés à cet annuaire — les autres annuaires synchronisés restent intacts.
Sélectif par annuaire

Chaque contact natif est rattaché à un annuaire via une map locale. C'est ce qui rend possible le wipe par annuaire sans toucher aux contacts des autres annuaires.

Pagination et limites

  • L'annuaire retourne au maximum 999 utilisateurs par page ; RingSync streame une page à la fois et l'appareil pagine avec le cursor.
  • Chaque appel annuaire côté serveur a un timeout de 60 secondes.
  • L'appareil plafonne une sync à 200 pages par sécurité contre un cursor corrompu.

Cas limites clés

CasComportement
Premier lancement (pas de delta link)Sync complète automatique.
Utilisateur retiré dans l'annuaireLe pull en arrière-plan désactive l'autorisation, pousse un wipe (si activé), retire le lien annuaire de l'utilisateur.
Utilisateur assigné mais pull pas encore passéLe login mobile insère une autorisation à la volée (l'annuaire a déjà filtré l'accès).
Photo indisponibleContact créé sans photo, pas d'erreur.
Champ vide dans l'annuaireChamp ignoré, valeur existante non écrasée.
Perte réseau pendant la syncJob marqué en erreur, reprise manuelle.
Utilisateur Guest (Entra)Toujours ignoré.
Plus de 10 000 utilisateursPagination delta gérée par le proxy, plafond de 200 pages côté appareil.
Changement de périmètre (all ↔ groups)Delta link réinitialisé pour forcer une sync complète.
Cette page vous a-t-elle été utile ?
Signaler un manque →