Invitation of User to Tenant
Concepts¶
General¶
For background and complete specification, refer to
Invite User to Organization Use Case.
Constraints for MVP2¶
- Any user of a tenant can send an invite.
- The system does not send the email automatically, but provides a sample message with a link to be sent by the user.
Requirements Summary¶
The system will provide a Restful API and a User Interface to access the functionality:
- For any tenant user to
- Create an Invitation to a User, identified by their email address, to join the Tenant.
- View all Invitations, sorted by creation date descending, with ability to filter by status
(Pending, Accepted, Expired, Rejected) and paginate through the list. - Cancel an Invitation that is in
PENDINGstatus.
- For any User receiving an Invitation to join a Tenant
- Accepting the Invitation, joining the Tenant.
- Rejecting the Invitation, declining to join the Tenant.
- For the system to
- Provide the Invitation as a link that encodes the Invitation identifier and, for UI convenience,
the invitee’s email address. - Validate the Invitation
1. The Invitation exists.
2. The Invitation is inPENDINGstatus.
3. The Invitation is for the logged in user.
- Provide the Invitation as a link that encodes the Invitation identifier and, for UI convenience,
Activities¶
See the Sign-Up Use Case
and Sign Up Use Case (SSO) for the referenced steps in the scenario.
Information Model¶
General Information Contents¶
All entities will include the following information:
| Field Name | Type | Description | Notes |
|---|---|---|---|
id |
UUID | A unique to the entity in the system | Generated by the system. Not editable |
rId |
UUID | A unique identifier for a particular version of the entity | Not editable |
createdBy |
Text | The identification of the user that created the entity | Not Editable |
createdAt |
TimeCoordinates | The time when the entity was created, specifying when it was created in the real world and when it was recorded by the system. | |
author |
Text | The identification of the users that made the latest change (version) of the entity. | |
asOf |
TimeCoordinates | The time when the latest change was made (effective and recorded). |
In addition, Invitations belong to a tenant, so they will also have:
| Field Name | Type | Description | Notes |
|---|---|---|---|
tenantId |
UUID | The identification of the tenant that owns this entity. |
Entities¶
Invitation¶
| Field Name | Type | Default | User Editable | Description | Notes |
|---|---|---|---|---|---|
invitationDate |
Date | The date when the invitation is created | No | The date when the invitation is created | |
expirationDate |
Date | invitationDate plus a configurable interval | No | A date in the future where the invitation will expire | |
status |
Enumerated | PENDING |
No | The current status of the invitation in its lifecycle. | Not directly editable, but it changes with actions that the user performs on the Invitation |
invitee |
String | Blank | Yes | Email of the invited user | |
inviterId |
UUID | id of the user currently logged in | No | id of the logged in user. | |
tenantId |
UUID | id of the current tenant | No | id of the tenant. |