Invite User to Tenant
Implement OAM::IAM::0006::0004.UC from Identity and Access Management Behaviors.
MVP2 Constraints
Section titled “MVP2 Constraints”- Any user of a tenant can send an invitation.
- The system does not send the email automatically; it provides a sample message with an invitation link that the user sends manually.
- Invitation inbox is not part of the system. Invitees are expected to manage their invitations in their email inbox.
- Batch operations (creation, management) of invitations is out-of-scope.
Requirements
Section titled “Requirements”For any tenant user
Section titled “For any tenant user”- Create an invitation to a user (identified by email) to join the tenant.
- View all invitations sorted by creation date (descending), filterable by status (PENDING, ACCEPTED, EXPIRED, REJECTED, CANCELLED, ARCHIVED) with pagination.
- Cancel an invitation in
PENDINGstatus. - Reopen an invitation in
CANCELLEDorEXPIREDstatus, returning it toPENDING. - Archive an invitation from any status, moving it to
ARCHIVED. - Refresh an invitation in
PENDINGstatus, updating itsinvitationDateto the current date and time and itsexpirationDateto the current date and time plus the configured expiration interval.
For the invitee
Section titled “For the invitee”- Accept the invitation (joining the tenant).
- Reject the invitation.
For the system
Section titled “For the system”- Provide the invitation as a link encoding the invitation identifier and (for convenience) the invitee’s email.
- Validate the invitation:
- Exists
- Is in
PENDINGstatus - Is addressed to the logged-in user
Information Model
Section titled “Information Model”General Information Contents
Section titled “General Information Contents”All entities will include the following information:
| Field Name | Type | Description | Notes |
|---|---|---|---|
id | UUID | A unique identifier for 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
Section titled “Entities”Invitation
Section titled “Invitation”| Field | Type | Default | Editable | Description |
|---|---|---|---|---|
invitationDate | Date | Created at | No | Date invitation was created |
expirationDate | Date | invitationDate + configurable interval | No | Expiry date |
status | Enum | PENDING | No | Current lifecycle status |
invitee | String | Blank | Yes | Email of invited user |
inviterId | UUID | Current user id | No | ID of inviting user |
tenantId | UUID | Current tenant id | No | Tenant being invited to |
Invitation Lifecycle
Section titled “Invitation Lifecycle”The state diagram annotates those states and transitions that are triggered by the invitee or the system events. All other transitions (e.g. cancel, archive) are triggered by a user in the inviting tenant.
These operations (refresh, cancel, …) are implemented as update of the status field on the invitation entity, as dewxcibed by the transiotion diagram below.
Sequence Overview
Section titled “Sequence Overview”- Inviter creates invitations via the Organization Page.
- System registers a
PENDINGinvitation and returns an invitation URL. - Inviter shares the URL (email, message, QR code).
- Invitee opens the URL, signs in or creates an account if needed.
- System validates the invitation.
- On accept:
- invitation transitions to
ACCEPTED. - a new
AgentForis created linking the invitee’s UserAccount to the tenant; - the invitee’s role in the tenant is set to
USER; - invitee’s active tenant is set to the new tenant.
- invitation transitions to
- On reject:
- invitation transitions to
REJECTED.
- invitation transitions to
Activities
Section titled “Activities”Copyright: © Arda Systems 2025-2026, All rights reserved