Skip to main content

Tenant Service — Event Schemas

Status: populated Owner: TBD Last updated: 2026-04-18 Companion: Service Template · 04 Events · NAMING

NATS stream: TENANT (subjects tenant.>) Retention class: 7 years for lifecycle events; 90 days for config events. EventEnvelope: { id, subject, version, tenantId, occurredAt, payload }.

1. Events produced

1.1 Tenant lifecycle

EventSubjectVersionRetention
TenantCreatedtenant.tenant.created.v1v17 years
TenantActivatedtenant.tenant.activated.v1v17 years
TenantSuspendedtenant.tenant.suspended.v1v17 years
TenantReactivatedtenant.tenant.reactivated.v1v17 years
TenantTerminatedtenant.tenant.terminated.v1v17 years
TenantUpdatedtenant.tenant.updated.v1v190 days
TenantConfigChangedtenant.config.changed.v1v190 days
SubscriptionUpdatedtenant.subscription.updated.v1v17 years
SubscriptionExpiredtenant.subscription.expired.v1v17 years

tenant.tenant.activated.v1 payload:

{
"tenantId": "ten_01H...",
"slug": "kabul-central-hospital",
"rootNodeId": "nod_01H...",
"hierarchyProfileId": "AFG_MOPH",
"activatedAt": "2026-04-18T10:00:00Z"
}

tenant.tenant.suspended.v1 payload:

{
"tenantId": "ten_01H...",
"reason": "Non-payment",
"suspendedBy": "usr_01H...",
"suspendedAt": "2026-04-18T12:00:00Z"
}

tenant.subscription.expired.v1 payload:

{
"tenantId": "ten_01H...",
"subscriptionEnd": "2026-04-17",
"tier": "PROFESSIONAL"
}

1.2 Hierarchy

EventSubjectVersionRetention
HierarchyNodeCreatedtenant.hierarchy_node.created.v1v190 days
HierarchyNodeUpdatedtenant.hierarchy_node.updated.v1v190 days
HierarchyNodeArchivedtenant.hierarchy_node.archived.v1v17 years

1.3 Membership and RBAC

EventSubjectVersionRetention
UserProfileCreatedtenant.user_profile.created.v1v17 years
OrgMembershipCreatedtenant.org_membership.created.v1v17 years
OrgMembershipRemovedtenant.org_membership.removed.v1v17 years
RoleAssignedtenant.role_assignment.created.v1v17 years
RoleRevokedtenant.role_assignment.removed.v1v17 years
UserInvitedtenant.user.invited.v1v190 days

tenant.role_assignment.created.v1 payload:

{
"tenantId": "ten_01H...",
"userId": "usr_01H...",
"roleCode": "CLINICIAN",
"nodeId": "nod_01H...",
"assignedBy": "usr_01H...",
"assignedAt": "2026-04-18T09:00:00Z"
}

2. Events consumed

EventSubjectProducerAction
UserRegisteredidentity.user.registered.v1identity-serviceJIT create UserProfile
UserSuspendedidentity.user.suspended.v1identity-serviceSuspend all OrgMemberships
UserDeactivatedidentity.user.deactivated.v1identity-serviceRemove memberships; anonymize profile

3. Legacy subject aliases (dual-publish until M2)

Legacy subjectNew subject
tenant.createdtenant.tenant.created.v1
tenant.activatedtenant.tenant.activated.v1
tenant.suspendedtenant.tenant.suspended.v1