UC-GEN-REL-005 — Relatie-uitnodiging accepteren of afwijzen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-REL-005 |
| Naam | Relatie-uitnodiging accepteren of afwijzen |
| Domein | Relaties |
| Primaire actor | Uitgenodigde gebruiker |
| Secundaire actor(en) | Uitnodigende gebruiker |
| Rolcontext | De doelrol uit de uitnodiging, bijvoorbeeld Student bij vriendschap of Guardian bij ouder/voogd |
| Betrokken schermen | SCH-GEN-02 — Berichten overzicht, SCH-GEN-04 — Open bericht, SCH-GEN-08 — Relaties |
| Primaire ingang | Systeembericht met EntityType = RelationshipInvitation |
| Gerelateerde usecases | UC-GEN-REL-002 — Vriend uitnodigen, UC-GEN-REL-003 — Ouder/voogd uitnodigen, UC-GEN-REL-001 — Relaties bekijken |
| Primaire entiteiten | RelationshipInvitations, UserRelationships, RelationshipTypes, Users, Roles |
| Secundaire entiteiten / events | RelationshipEvents, SystemMessages, SystemMessageTemplates |
| Gerelateerde popups | POP-GEN-REL-INVITE-DECLINE-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Should have |
2. Omschrijving
De uitgenodigde gebruiker verwerkt een ontvangen relatie-uitnodiging via een systeembericht. De gebruiker kan de uitnodiging accepteren of afwijzen.
Bij acceptatie wordt de uitnodiging verwerkt en ontstaat de bijbehorende actieve relatie. Bij afwijzing wordt de uitnodiging afgehandeld zonder dat er een relatie wordt aangemaakt. De uitnodigende gebruiker ontvangt in beide gevallen een systeembericht of gelijkwaardige notificatie over de uitkomst.
Deze usecase gebruikt bewust één primaire ingang: het systeembericht. Inkomende relatie-uitnodigingen worden niet als aparte inkomende lijst op de pagina Relaties getoond.
De technische accept/reject-afhandeling is gedeeld tussen mailbox en onboarding. De UI-context bepaalt vormgeving en route, maar de domeinregels, statusguards, autorisatie en relatiecreatie staan in één generieke decision-service.
3. Scope
Deze usecase beschrijft:
- het openen van een ontvangen relatie-uitnodiging via een systeembericht;
- het accepteren van een openstaande uitnodiging;
- het afwijzen van een openstaande uitnodiging;
- het activeren van de uiteindelijke relatie na acceptatie;
- het blokkeren van verlopen, ingetrokken, al verwerkte of niet-toegestane uitnodigingen;
- het verwerken van de edgecase waarin een uitnodiging pas na registratie aan een gebruiker gekoppeld kan worden;
- het vereisen van een bewuste rolkeuze wanneer de ontvanger de doelrol nog niet actief voert;
- het gebruiken van één decision-action met
decision = acceptofdecision = rejectvoor mailboxbeslissingen; - het aanmaken van uitnodigerfeedback via systeemberichttemplates zonder nieuwe hardcoded systeemberichtteksten.
Deze usecase beschrijft niet:
- het versturen van een vrienduitnodiging;
- het versturen van een ouder-/voogduitnodiging;
- het algemene registratieproces;
- het beheren van de volledige rolkeuzepagina of profielrolinstellingen;
- het ontkoppelen van een bestaande relatie;
- het beheer van systeemberichttemplates; deze beheer-UI valt onder Feature 17, terwijl deze usecase de runtime-template gebruikt.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | Er bestaat een RelationshipInvitations-record met Status = Pending. |
| PRE-003 | De uitnodiging heeft een ToUserId dat overeenkomt met de ingelogde gebruiker, of de uitnodiging is na registratie aan deze gebruiker gekoppeld op basis van het genormaliseerde ToEmail. |
| PRE-004 | Het relatietype van de uitnodiging is actief en toegestaan. |
| PRE-005 | De gebruiker opent de uitnodiging via een systeembericht met EntityType = RelationshipInvitation. |
| PRE-006 | De uitnodiging is niet verlopen op het moment van verwerken. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Bij acceptatie is RelationshipInvitations.Status = Accepted. |
| POST-002 | Bij acceptatie is een actief UserRelationships-record aangemaakt voor de relatie- en rolcontext uit de uitnodiging. |
| POST-003 | Bij acceptatie zijn RespondedAtUtc, RespondedByUserId en ResolvedRelationshipId gevuld op de uitnodiging. |
| POST-004 | Bij afwijzing is RelationshipInvitations.Status = Rejected. |
| POST-005 | Bij afwijzing zijn RespondedAtUtc en RespondedByUserId gevuld en blijft ResolvedRelationshipId leeg. |
| POST-006 | De oorspronkelijke uitnodiging verdwijnt uit openstaande uitnodigingen en is niet meer accepteerbaar of afwijsbaar. |
| POST-007 | De uitnodigende gebruiker ontvangt een systeembericht of gelijkwaardige notificatie over acceptatie of afwijzing. |
| POST-008 | De verwerking is auditbaar via RelationshipEvents. |
6. Trigger
De uitgenodigde gebruiker opent een systeembericht dat verwijst naar een openstaande relatie-uitnodiging en kiest Accepteren of Afwijzen.
7. Normale processtroom
Accepteren
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Berichtenoverzicht | Opent een systeembericht over een relatie-uitnodiging. | Het systeem opent het systeembericht of de bijbehorende uitnodigingscontext. | SystemMessages.EntityType = RelationshipInvitation; EntityId = RelationshipInvitations.Id. |
| 2 | Systeem | Backend | Laadt de uitnodiging. | Het systeem toont de uitnodiging als deze nog openstaand en geldig is. | Alleen Status = Pending is verwerkbaar. |
| 3 | Gebruiker | Systeembericht / uitnodigingscontext | Kiest Accepteren. | Het systeem start acceptatie zonder bevestigingspopup. | Accepteren is een directe actie. |
| 4 | Systeem | Backend | Controleert of de ingelogde gebruiker de bedoelde ontvanger is. | De actie gaat alleen door wanneer de gebruiker overeenkomt met ToUserId of een geldige registratiekoppeling. | Server-side controle. |
| 5 | Systeem | Backend | Controleert relatietype en doelrol. | Het systeem bepaalt welke rolcontext voor acceptatie nodig is. | Bijvoorbeeld Friendship met doelrol Student of GuardianStudent met doelrol Guardian. |
| 6 | Systeem | Backend / rolcontext | Controleert of de gebruiker de doelrol kan voeren. | Als de rol al beschikbaar is, gaat de flow door. Als de doelrol nog niet actief beschikbaar is, wordt een expliciete rolkeuzestap aangeboden. | De gebruiker moet bewust kiezen om de benodigde rolcontext te gebruiken of te activeren. |
| 7 | Gebruiker | Rolkeuzestap | Bevestigt de benodigde rolcontext wanneer deze nog niet actief gevoerd werd. | Het systeem mag pas daarna doorgaan met acceptatie. | De exacte rolbeheeruitwerking wordt centraal vastgelegd in FO/TO/SRS. |
| 8 | Systeem | Backend | Controleert dubbele actieve relaties. | Het systeem voorkomt dat een identieke actieve relatie dubbel ontstaat. | Controle op UserRelationships met dezelfde relatie- en rolcontext. |
| 9 | Systeem | Database | Maakt de relatie actief. | Er wordt een UserRelationships-record aangemaakt. | Richting en rolcontext volgen de uitnodiging. |
| 10 | Systeem | Database | Werkt de uitnodiging bij. | Status = Accepted, RespondedAtUtc, RespondedByUserId en ResolvedRelationshipId worden gevuld. | Uitnodiging blijft historisch herleidbaar. |
| 11 | Systeem | Eventlaag | Registreert de verwerking. | RelationshipEvents legt acceptatie en relatieactivatie vast. | Event verwijst naar uitnodiging en relatie. |
| 12 | Systeem | Communicatie | Informeert de uitnodiger. | De uitnodiger ontvangt een systeembericht of gelijkwaardige notificatie. | Bijvoorbeeld type RelationshipInvitationAccepted. |
| 13 | Systeem | UI | Werkt de uitnodigingscontext bij. | De uitnodiging is niet meer openstaand en de actieknoppen zijn niet meer beschikbaar. | De relatie verschijnt waar relevant in de relatieoverzichten van beide partijen. |
Afwijzen
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Berichtenoverzicht | Opent een systeembericht over een relatie-uitnodiging. | Het systeem opent het systeembericht of de bijbehorende uitnodigingscontext. | SystemMessages.EntityType = RelationshipInvitation. |
| 2 | Gebruiker | Systeembericht / uitnodigingscontext | Kiest Afwijzen. | Het systeem toont een bevestigingspopup. | PopupKey POP-GEN-REL-INVITE-DECLINE-CONFIRM. |
| 3 | Gebruiker | Bevestigingspopup | Annuleert de afwijzing. | De popup sluit en de uitnodiging blijft openstaand. | Geen datamutatie. |
| 4 | Gebruiker | Bevestigingspopup | Bevestigt de afwijzing. | Het systeem start de server-side verwerking. | Afwijzing is pas definitief na bevestiging. |
| 5 | Systeem | Backend | Controleert of de uitnodiging nog openstaand en geldig is. | Alleen Status = Pending mag worden afgewezen. | Server-side controle. |
| 6 | Systeem | Backend | Controleert of de ingelogde gebruiker de bedoelde ontvanger is. | Alleen de beoogde ontvanger mag afwijzen. | Controle op ToUserId of geldige registratiekoppeling. |
| 7 | Systeem | Database | Werkt de uitnodiging bij. | Status = Rejected, RespondedAtUtc en RespondedByUserId worden gevuld. | Er wordt geen relatie aangemaakt. |
| 8 | Systeem | Eventlaag | Registreert de afwijzing. | RelationshipEvents legt invitation_rejected vast. | Event verwijst naar de uitnodiging. |
| 9 | Systeem | Communicatie | Informeert de uitnodiger. | De uitnodiger ontvangt een systeembericht of gelijkwaardige notificatie. | Bijvoorbeeld type RelationshipInvitationRejected. |
| 10 | Systeem | UI | Werkt de uitnodigingscontext bij. | De uitnodiging is niet meer openstaand en de actieknoppen zijn niet meer beschikbaar. | Afgehandelde uitnodigingen worden niet als openstaand getoond. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | Het systeembericht verwijst niet naar een bestaande uitnodiging. | Het systeem toont dat de uitnodiging niet meer beschikbaar is. | Inline melding of bestaande algemene foutmelding. | Geen. |
| ALT-002 | 2 | De uitnodiging heeft niet langer Status = Pending. | Het systeem toont dat de uitnodiging al verwerkt is en blokkeert de acties. | Inline melding. | Geen. |
| ALT-003 | 2 | De uitnodiging is verlopen. | Het systeem blokkeert acceptatie en afwijzing en toont dat de uitnodiging is verlopen. | Inline melding. | Status kan door achtergrondproces op Expired zijn gezet. |
| ALT-004 | 4 / 6 | De ingelogde gebruiker is niet de bedoelde ontvanger. | Het systeem weigert de actie server-side. | Inline melding of algemene autorisatiefout. | Geen. |
| ALT-005 | 6 | De gebruiker kan de doelrol niet voeren en kiest de rolkeuzestap niet. | Acceptatie wordt afgebroken en de uitnodiging blijft openstaand zolang deze geldig is. | Rolkeuzestap blijft leidend. | Geen. |
| ALT-006 | 6 | De gebruiker kan de benodigde doelrol functioneel niet verkrijgen. | Het systeem blokkeert acceptatie. | Inline foutmelding binnen de uitnodigingscontext. | Geen. |
| ALT-007 | 8 | Er bestaat inmiddels al een actieve identieke relatie. | Het systeem blokkeert acceptatie om dubbele relaties te voorkomen. | Inline foutmelding binnen de uitnodigingscontext. | Geen nieuwe relatie. |
| ALT-008 | 9 | Het aanmaken van de relatie mislukt technisch. | De transactie wordt teruggedraaid en de uitnodiging blijft openstaand of wordt niet gewijzigd. | Algemene foutmelding. | Geen gedeeltelijke relatie. |
| ALT-009 | 10 / 7 | De uitnodiging wordt tegelijk door een andere sessie verwerkt. | Het systeem verwerkt slechts één actie en toont in de andere sessie de actuele status. | Inline melding. | Geen dubbele verwerking. |
| ALT-010 | 12 / 9 | Het systeembericht aan de uitnodiger kan niet direct worden aangemaakt. | De uitnodigingsverwerking blijft leidend; notificatie wordt gelogd of opnieuw aangeboden via technische herstelroute. | Geen blokkering voor de ontvanger. | Relatie- of afwijzingsmutatie blijft behouden wanneer de hoofdtransactie succesvol is. |
| ALT-011 | Registratiekoppeling | Een onbekende ontvanger registreert binnen de geldigheidsduur. | Het systeem koppelt de openstaande uitnodiging aan de nieuwe gebruiker en maakt daarna een systeembericht voor verwerking aan. | Geen directe relatieactivatie. | ToUserId wordt gevuld of functioneel koppelbaar gemaakt; SystemMessages wordt aangemaakt. |
| ALT-012 | Registratiekoppeling | Een onbekende ontvanger registreert buiten de geldigheidsduur. | Het systeem biedt de uitnodiging niet meer ter acceptatie aan. | Geen systeembericht voor verlopen uitnodiging, tenzij informatief gewenst. | Uitnodiging blijft Expired of wordt door achtergrondproces verlopen gemaakt. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-REL-005-001 | Inkomende relatie-uitnodigingen worden verwerkt via systeemberichten; er is geen aparte inkomende uitnodigingenlijst op de relatiepagina. |
| BR-UC-GEN-REL-005-002 | Alleen een uitnodiging met Status = Pending mag worden geaccepteerd of afgewezen. |
| BR-UC-GEN-REL-005-003 | Alleen de beoogde ontvanger mag een uitnodiging accepteren of afwijzen. |
| BR-UC-GEN-REL-005-004 | Accepteren activeert de relatie zonder extra bevestigingspopup, behalve wanneer een rolkeuzestap nodig is. |
| BR-UC-GEN-REL-005-005 | Afwijzen vraagt altijd om een bevestiging voordat de uitnodiging definitief wordt afgewezen. |
| BR-UC-GEN-REL-005-006 | Een relatie wordt pas actief na acceptatie door de ontvanger. |
| BR-UC-GEN-REL-005-007 | Bij acceptatie moet het systeem voorkomen dat een identieke actieve relatie dubbel wordt aangemaakt. |
| BR-UC-GEN-REL-005-008 | Bij acceptatie wordt de richting en rolcontext van de relatie afgeleid uit de oorspronkelijke uitnodiging. |
| BR-UC-GEN-REL-005-009 | Wanneer de ontvanger de benodigde doelrol nog niet actief voert, moet de gebruiker bewust kiezen om die rolcontext te gebruiken of te activeren voordat acceptatie wordt voltooid. |
| BR-UC-GEN-REL-005-010 | Bij acceptatie en afwijzing wordt de uitnodiger geïnformeerd via een systeembericht of gelijkwaardige notificatie. |
| BR-UC-GEN-REL-005-011 | Afgehandelde uitnodigingen worden niet langer als openstaande uitnodiging getoond. |
| BR-UC-GEN-REL-005-012 | Een systeembericht blijft technisch een mailbox-item; de actuele verwerkbaarheid van de uitnodiging wordt altijd bepaald op basis van RelationshipInvitations.Status. |
| BR-UC-GEN-REL-005-013 | Een uitnodiging die vóór registratie alleen ToEmail had, mag pas via een systeembericht verwerkt worden nadat de ontvanger als ToUserId bekend of functioneel gekoppeld is. |
| BR-UC-GEN-REL-005-014 | Onboarding en mailbox gebruiken dezelfde technische decision-service; de context mag de autorisatie- of statusregels niet versoepelen. |
| BR-UC-GEN-REL-005-015 | GUID-kennis, routeparameters, systeemberichten en zichtbare knoppen zijn geen autorisatiebewijs; alleen de actuele server-side ToUserId/geclaimde ontvanger mag beslissen. |
| BR-UC-GEN-REL-005-016 | Normale weigering vraagt geen vrije reden/toelichting. Systeemmatige afsluiting, zoals rol-incompatibiliteit, mag wel een functionele reason vastleggen. |
| BR-UC-GEN-REL-005-017 | Uitnodigerfeedback wordt via systeemberichttemplates gerenderd en gebruikt bij openstaande/externe uitnodigingen primair het uitgenodigde e-mailadres. |
Rolcontext bij acceptatie
Acceptatie mag niet automatisch een nieuwe rolcontext activeren zonder bewuste keuze van de gebruiker. Wanneer de gebruiker de doelrol nog niet actief voert, moet de acceptatieflow een expliciete rolkeuzestap of veilige blokkade toepassen voordat een relatie wordt aangemaakt.
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
SystemMessages.EntityType | Moet RelationshipInvitation zijn voor verwerkbare uitnodigingsberichten. |
SystemMessages.EntityId | Moet verwijzen naar een bestaande RelationshipInvitations.Id. |
RelationshipInvitations.Status | Alleen Pending is verwerkbaar. |
RelationshipInvitations.ToUserId | Moet overeenkomen met de ingelogde gebruiker. Een expliciete registratiekoppeling mag dit veld eerder hebben gevuld, maar tijdens de beslissing blijft ToUserId == actor verplicht. |
RelationshipInvitations.TargetRoleId | Moet overeenkomen met de rolcontext die voor acceptatie nodig is. |
RelationshipInvitations.RelationshipTypeId | Moet verwijzen naar een actief relatietype. |
| Doelrol | De ontvanger moet de doelrol kunnen voeren of bewust kunnen activeren/kiezen. |
| Dubbele relatie | Er mag geen actieve identieke relatie bestaan voor dezelfde relatie- en rolcontextcombinatie. |
| Concurrency | De acceptatie- of afwijzingsactie moet atomair controleren dat de uitnodiging nog Pending is. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1 | Database | SystemMessages | Bij openen kan ReadAtUtc worden gezet wanneer het systeembericht als gelezen geldt. |
| 9 | Database | UserRelationships | Bij acceptatie wordt een actief relatie-record aangemaakt met relatie- en rolcontext uit de uitnodiging. |
| 10 | Database | RelationshipInvitations | Bij acceptatie wordt Status = Accepted, RespondedAtUtc, RespondedByUserId en ResolvedRelationshipId gevuld. |
| 11 | Event / audit | RelationshipEvents | Bij acceptatie worden invitation_accepted en/of relationship_activated vastgelegd. |
| 12 | Database / communicatie | SystemMessages, SystemMessageTemplates | Bij acceptatie ontvangt de uitnodiger een via template gerenderd systeembericht over de geaccepteerde uitnodiging. |
| 7 | Database | RelationshipInvitations | Bij afwijzing wordt Status = Rejected, RespondedAtUtc en RespondedByUserId gevuld. |
| 8 | Event / audit | RelationshipEvents | Bij afwijzing wordt invitation_rejected vastgelegd. |
| 9 | Database / communicatie | SystemMessages, SystemMessageTemplates | Bij afwijzing ontvangt de uitnodiger een via template gerenderd systeembericht over de afgewezen uitnodiging. |
| ALT-011 | Database / communicatie | RelationshipInvitations, SystemMessages | Na registratie wordt een openstaande uitnodiging gekoppeld aan de nieuwe gebruiker en wordt het verwerkbare systeembericht aangemaakt. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
UserRelationships bij afwijzing | Afwijzen maakt geen relatie aan. |
RelationshipInvitations bij annuleren van afwijzing | De uitnodiging blijft openstaand. |
PrivateMessages | Relatie-uitnodigingen worden niet als privébericht opgeslagen. |
PrivateMessageThreads | De uitnodiging gebruikt systeemberichten en geen privéconversatie-thread. |
Users | Acceptatie van een uitnodiging maakt geen nieuw account aan; registratie is een aparte flow. |
RelationshipInvitations bij openen van het bericht | Alleen lezen of markeren van het systeembericht wijzigt de uitnodiging niet. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
Accepteren
Afwijzen
Koppeling na registratie
17. Popupverwijzingen
De usecase legt alleen popupverwijzingen vast. Titel, tekst, knoppen en overige popupdetails worden centraal beheerd in het popupregister.
| PopupKey | Moment / context | Doel |
|---|---|---|
POP-GEN-REL-INVITE-DECLINE-CONFIRM | Gebruiker kiest Afwijzen | Voorkomen dat een uitnodiging per ongeluk definitief wordt afgewezen. |
POP-GEN-REL-INVITE-ACCEPT-CONFIRM wordt niet gebruikt in deze usecase, omdat accepteren direct gebeurt. Wanneer de ontvanger de doelrol nog niet actief voert, is geen acceptatieconfirmatie nodig maar een expliciete rolkeuzestap. De rolkeuzestap gebruikt de centrale rol- en autorisatieregels en wordt niet als acceptatieconfirmatie behandeld.
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Relatiebeheer beschrijft acceptatie, afwijzing, verlopen uitnodigingen en gebruikersfeedback. |
| Technisch Ontwerp | Relatiebeheer, uitnodigingen en gedeelde oefeningen beschrijft uitnodigingstatussen, acceptatie-/afwijsflow, relationele events en transaction boundary per workflow. |
| Technisch Ontwerp | Berichten, systeemberichten, notificaties en privéthreads beschrijft systeemberichten als ingang voor acceptatie of afwijzing. |
| Technisch Ontwerp | Background jobs, TickerQ en periodieke verwerking beschrijft verwerking van verlopen uitnodigingen. |
| Software Requirements Specification | Borgt de centrale requirements voor relatie-uitnodigingen, acceptatiecriteria, server-side conflictpreventie en veilige statusovergangen. |
19. SRS-trace
Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-GEN-REL-005-001 | SRS-REL-001 SRS-MSG-001 AC-REL-001 AC-MSG-001 | Inkomende relatie-uitnodigingen via systeemberichten kunnen aanbieden |
REQ-UC-GEN-REL-005-002 | SRS-RDM-001 SRS-RDM-007 SRS-REL-001 AC-RDM-001 AC-RDM-007 AC-REL-001 | Inkomende relatie-uitnodigingen niet als aparte inkomende uitnodigingenlijst op de relatiepagina vereisen |
REQ-UC-GEN-REL-005-003 | SRS-REL-002 SRS-SHR-001 AC-REL-002 AC-SHR-001 | Een openstaande relatie-uitnodiging kunnen accepteren wanneer de ingelogde gebruiker de beoogde ontvanger is |
REQ-UC-GEN-REL-005-004 | SRS-REL-001 SRS-SHR-001 AC-REL-001 AC-SHR-001 | Een openstaande relatie-uitnodiging kunnen afwijzen wanneer de ingelogde gebruiker de beoogde ontvanger is |
REQ-UC-GEN-REL-005-005 | SRS-AUTH-001 SRS-REL-002 AC-AUTH-001 AC-REL-002 | Acceptatie en afwijzing blokkeren wanneer de uitnodiging niet langer Pending is |
REQ-UC-GEN-REL-005-006 | SRS-AUTH-001 SRS-REL-002 SRS-SHR-001 AC-AUTH-001 AC-REL-002 AC-SHR-001 | Acceptatie en afwijzing server-side blokkeren wanneer de ingelogde gebruiker niet de beoogde ontvanger is |
REQ-UC-GEN-REL-005-007 | SRS-AUTH-001 SRS-REL-002 SRS-SHR-001 AC-AUTH-001 AC-REL-002 AC-SHR-001 | Bij acceptatie controleren dat de ontvanger de benodigde doelrol kan voeren of bewust kiest om die rolcontext te gebruiken of te activeren |
REQ-UC-GEN-REL-005-008 | SRS-REL-002 AC-REL-002 | Bij acceptatie voorkomen dat een identieke actieve relatie dubbel ontstaat |
REQ-UC-GEN-REL-005-009 | SRS-AUTH-001 SRS-REL-002 AC-AUTH-001 AC-REL-002 | Bij acceptatie een actief UserRelationships-record aanmaken volgens de relatie- en rolcontext uit de uitnodiging |
REQ-UC-GEN-REL-005-010 | SRS-REL-002 AC-REL-002 | Bij acceptatie RelationshipInvitations.Status wijzigen naar Accepted |
REQ-UC-GEN-REL-005-011 | SRS-REL-001 AC-REL-001 | Bij afwijzing RelationshipInvitations.Status wijzigen naar Rejected |
REQ-UC-GEN-REL-005-012 | SRS-REL-002 SRS-NFR-AUD-001 AC-REL-002 AC-NFR-AUD-001 | Bij acceptatie en afwijzing RespondedAtUtc en RespondedByUserId vastleggen |
REQ-UC-GEN-REL-005-013 | SRS-REL-002 SRS-NFR-AUD-001 AC-REL-002 AC-NFR-AUD-001 | Bij acceptatie ResolvedRelationshipId vastleggen |
REQ-UC-GEN-REL-005-014 | SRS-REL-002 AC-REL-002 | De uitnodiger informeren wanneer een uitnodiging is geaccepteerd of afgewezen |
REQ-UC-GEN-REL-005-015 | SRS-REL-002 SRS-NFR-AUD-001 AC-REL-002 AC-NFR-AUD-001 | Acceptatie en afwijzing auditbaar vastleggen via RelationshipEvents |
REQ-UC-GEN-REL-005-016 | SRS-REL-001 AC-REL-001 | Na registratie controleren of er openstaande uitnodigingen bestaan op het geregistreerde e-mailadres |
REQ-UC-GEN-REL-005-017 | SRS-REL-001 SRS-MSG-002 SRS-SHR-002 SRS-SHR-005 AC-REL-001 AC-MSG-002 AC-SHR-002 AC-SHR-005 | Pas een verwerkbaar systeembericht voor een externe uitnodiging maken wanneer de ontvanger als gebruiker bekend of gekoppeld is |
REQ-UC-GEN-REL-005-018 | SRS-REL-001 SRS-SHR-001 AC-REL-001 AC-SHR-001 | Een afwijzing pas definitief uitvoeren na bevestiging door de ontvanger |
REQ-UC-GEN-REL-005-019 | SRS-REL-001 AC-REL-001 | Afgehandelde uitnodigingen niet langer als openstaande uitnodiging tonen |
REQ-UC-GEN-REL-005-020 | SRS-REL-002 SRS-NFR-PER-001 AC-REL-002 AC-NFR-PER-001 | Concurrency rond acceptatie en afwijzing zodanig afhandelen dat een uitnodiging maximaal één definitieve uitkomst krijgt |