lumnik. / scenarios All scenarios · Français

Two systems and one member each one rules its own fields

Goal Show each field of a member from the system that rules it, without hiding a disagreement.

A health insurer keeps its members in its contract system and in its portal. With one source order, one of them is always wrong.

gestion-night1.csv
member_no,full_name,plan,effective_date,street,city
M-1001,DUPONT Claire,ESSENTIEL,2024-01-01,4 rue des Lilas,Lyon
M-1002,MARTIN Paul,CONFORT,2023-06-01,12 avenue Foch,Villeurbanne
M-1003,BERNARD Lucie,CONFORT,2025-03-01,7 place Bellecour,Lyon
M-1004,PETIT Hugo,ESSENTIEL,2022-09-01,3 chemin du Moulin,Vienne
M-1005,ROUX Anna,INTEGRAL,2024-11-01,18 quai Saint-Antoine,Lyon
M-1006,FAURE Léo,CONFORT,2021-02-01,9 rue Garibaldi,Lyon
portail-night1.csv
member_no,full_name,plan,street,city,email
M-1001,Dupont Claire,ESSENTIEL,4 rue des Lilas,Lyon,claire.dupont@example.org
M-1002,MARTIN Paul,CONFORT,25 rue Paul Bert,Lyon,paul.martin@example.org
M-1003,BERNARD Lucie,ESSENTIEL,7 place Bellecour,Lyon,lucie.bernard@example.org
M-1004,PETIT Hugo,ESSENTIEL,3 chemin du Moulin,Vienne,
M-1005,ROUX Anna,INTEGRAL,41 cours Gambetta,Lyon,anna.roux@example.org
M-1006,FAURE Léo,CONFORT,9 rue Garibaldi,Lyon,leo.faure@example.org
manifests/20-member.yaml
kind: Entityname: member_alabel: Adhérentdescription: "One member across the contract system and the member portal."scopes: [adhesion]match: [member_no]sources:  - table: t_scenario_member_gestion_a    map:      member_no: member_no      full_name: full_name      plan: plan      effective_date: effective_date      street: street      city: city  - table: t_scenario_member_portail_a    map:      member_no: member_no      full_name: full_name      plan: plan      street: street      city: city      email: email
manifests/30-member-prefer.yaml
kind: Entityname: member_alabel: Adhérentdescription: "One member across the contract system and the member portal."scopes: [adhesion]match: [member_no]sources:  - table: t_scenario_member_gestion_a    map:      member_no: member_no      full_name: full_name      plan: plan      effective_date: effective_date      street: street      city: city  - table: t_scenario_member_portail_a    map:      member_no: member_no      full_name: full_name      plan: plan      street: street      city: city      email: emailcolumns:  street:    prefer: t_scenario_member_portail_a  city:    prefer: t_scenario_member_portail_a
gestion-night2.csv
member_no,full_name,plan,effective_date,street,city
M-1001,DUPONT Claire,ESSENTIEL,2024-01-01,4 rue des Lilas,Lyon
M-1002,MARTIN Paul,CONFORT,2023-06-01,25 rue Paul Bert,Lyon
M-1003,BERNARD Lucie,CONFORT,2025-03-01,7 place Bellecour,Lyon
M-1004,PETIT Hugo,ESSENTIEL,2022-09-01,3 chemin du Moulin,Vienne
M-1005,ROUX Anna,INTEGRAL,2024-11-01,41 cours Gambetta,Lyon
M-1006,FAURE Léo,CONFORT,2021-02-01,9 rue Garibaldi,Lyon

Limits

  • Each column is fused on its own: preferring the portal for street and city does not tie them.
  • A preference chooses the value shown; it does not settle the dispute at the source.
  • Synthetic data.

Insurer · members

One member, two systems.

The contract system and the portal.

Six members, two nights

The problem

Who is right?

  • The contract system for the plan.
  • The portal for the address.

What is not changed

Both systems stay as they are.

  • Two exports every night.
  • No fix in the hub.

The trap

One order for everything.

  • Contract first keeps the old address.
  • Portal first loses the right plan.

What had to be written

prefer: t_scenario_member_portail_a

One line.

  • The source that rules, column by column.
  • Disagreements stay listed.
  • A 54-line scenario, three manifests.

The next night

The contract system catches up.

  • The address disagreements go away.
  • The rest are for the source to settle.

The limit

Preferring is not settling.

  • A disagreement is settled at the source.

Try it

The scenario replays locally.

Every step is published with its output.

This scenario runs on lumnik Open, free and open source.

Try lumnik Open →