IAM Domain
This page presents the ERD for each AggregateRoot, grouping related entities into domain boundaries. Each AggregateRoot enforces business rules, processes commands synchronously, and defines consistency borders within a single transactional scope. An indicative json schema is created to how the export of a aggregate root will approximitly look like
User
Aggregate Root: User
Represents users in the system with their authentication and authorization information.
erDiagram
"IAM.OpenIdProviderUserSessions" {
bigint TokenRegisteredTimestamp PK
nvarchar JwtId PK
uniqueidentifier UserId
nvarchar Username
uniqueidentifier AuthToken
nvarchar InitialIpAddress
varbinary RolesHash
varbinary PermissionsHash
}
"IAM.UserSessionKeyValues" {
uniqueidentifier Id PK
uniqueidentifier UserSessionId FK
nvarchar Key
nvarchar Value
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.UserSessionRoles" {
uniqueidentifier Id PK
uniqueidentifier UserSessionId FK
nvarchar RoleName
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.UserSessions" {
uniqueidentifier Id PK
uniqueidentifier UserId FK
uniqueidentifier AuthToken
nvarchar IPaddress
datetimeoffset SessionCreatedDateTime
datetimeoffset SessionEndDateTime
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar DeviceDescription
bit Concealed
nvarchar SessionIdentifier
nvarchar IdentityProviderDescription
varbinary PermissionsHash
varbinary RolesHash
nvarchar UserIdentifier
nvarchar Username
}
"IAM.Users" {
uniqueidentifier Id PK
nvarchar FirstName
nvarchar LastName
nvarchar Username
nvarchar Email
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar ShortName
nvarchar ColorCode
bit HasAvatar
bit Concealed
nvarchar UserIdentifier
nvarchar DisplayName
}
"IAM.UsersInUserGroup" {
uniqueidentifier UserGroupId PK
uniqueidentifier UserId PK
}
"IAM.UserSessionKeyValues" }o--|| "IAM.UserSessions" : "UserSessionId"
"IAM.UserSessionRoles" }o--|| "IAM.UserSessions" : "UserSessionId"
"IAM.UserSessions" }o--|| "IAM.Users" : "UserId"
"IAM.TeamMemberSet" }o--|| "IAM.Users" : "UserId"
"IAM.UsersInUserGroup" }o--|| "IAM.Users" : "UserId"
"IAM.UsersInUserGroup" }o--|| "IAM.UserGroups" : "UserGroupId"
erDiagram
"IAM.OpenIdProviderUserSessions" {
bigint TokenRegisteredTimestamp PK
nvarchar JwtId PK
uniqueidentifier UserId
nvarchar Username
uniqueidentifier AuthToken
nvarchar InitialIpAddress
varbinary RolesHash
varbinary PermissionsHash
}
"IAM.UserSessionKeyValues" {
uniqueidentifier Id PK
uniqueidentifier UserSessionId FK
nvarchar Key
nvarchar Value
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.UserSessionRoles" {
uniqueidentifier Id PK
uniqueidentifier UserSessionId FK
nvarchar RoleName
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.UserSessions" {
uniqueidentifier Id PK
uniqueidentifier UserId FK
uniqueidentifier AuthToken
nvarchar IPaddress
datetimeoffset SessionCreatedDateTime
datetimeoffset SessionEndDateTime
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar DeviceDescription
bit Concealed
nvarchar SessionIdentifier
nvarchar IdentityProviderDescription
varbinary PermissionsHash
varbinary RolesHash
nvarchar UserIdentifier
nvarchar Username
}
"IAM.Users" {
uniqueidentifier Id PK
nvarchar FirstName
nvarchar LastName
nvarchar Username
nvarchar Email
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar ShortName
nvarchar ColorCode
bit HasAvatar
bit Concealed
nvarchar UserIdentifier
nvarchar DisplayName
}
"IAM.UsersInUserGroup" {
uniqueidentifier UserGroupId PK
uniqueidentifier UserId PK
}
"IAM.UserSessionKeyValues" }o--|| "IAM.UserSessions" : "UserSessionId"
"IAM.UserSessionRoles" }o--|| "IAM.UserSessions" : "UserSessionId"
"IAM.UserSessions" }o--|| "IAM.Users" : "UserId"
"IAM.TeamMemberSet" }o--|| "IAM.Users" : "UserId"
"IAM.UsersInUserGroup" }o--|| "IAM.Users" : "UserId"
"IAM.UsersInUserGroup" }o--|| "IAM.UserGroups" : "UserGroupId"
{
"definitions": {
"IAM.UserSessionRoles": {
"properties": {
"Concealed": {
"type": "boolean",
"description": "bit"
},
"RoleName": {
"type": "string",
"description": "nvarchar"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"UserSessionId": {
"type": "string",
"description": "FK to IAM.UserSessions"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
}
},
"type": "object"
},
"IAM.Users": {
"properties": {
"LastName": {
"type": "string",
"description": "nvarchar"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Concealed": {
"type": "boolean",
"description": "bit"
},
"Username": {
"type": "string",
"description": "nvarchar"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"FirstName": {
"type": "string",
"description": "nvarchar"
},
"DisplayName": {
"type": "string",
"description": "nvarchar"
},
"ColorCode": {
"type": "string",
"description": "nvarchar"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"UserIdentifier": {
"type": "string",
"description": "nvarchar"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"HasAvatar": {
"type": "boolean",
"description": "bit"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"ShortName": {
"type": "string",
"description": "nvarchar"
},
"Email": {
"type": "string",
"description": "nvarchar"
}
},
"type": "object"
},
"IAM.UsersInUserGroup": {
"properties": {
"UserId": {
"type": "string",
"description": "FK to IAM.Users"
},
"UserGroupId": {
"type": "string",
"description": "FK to IAM.UserGroups"
}
},
"type": "object"
},
"IAM.OpenIdProviderUserSessions": {
"properties": {
"AuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Username": {
"type": "string",
"description": "nvarchar"
},
"TokenRegisteredTimestamp": {
"type": "string",
"description": "bigint"
},
"RolesHash": {
"type": "string",
"description": "varbinary"
},
"PermissionsHash": {
"type": "string",
"description": "varbinary"
},
"UserId": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"InitialIpAddress": {
"type": "string",
"description": "nvarchar"
},
"JwtId": {
"type": "string",
"description": "nvarchar"
}
},
"type": "object"
},
"IAM.UserSessionKeyValues": {
"properties": {
"Concealed": {
"type": "boolean",
"description": "bit"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Key": {
"type": "string",
"description": "nvarchar"
},
"UserSessionId": {
"type": "string",
"description": "FK to IAM.UserSessions"
},
"Value": {
"type": "string",
"description": "nvarchar"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
}
},
"type": "object"
},
"IAM.UserSessions": {
"properties": {
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"SessionEndDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"IPaddress": {
"type": "string",
"description": "nvarchar"
},
"Concealed": {
"type": "boolean",
"description": "bit"
},
"IdentityProviderDescription": {
"type": "string",
"description": "nvarchar"
},
"Username": {
"type": "string",
"description": "nvarchar"
},
"SessionIdentifier": {
"type": "string",
"description": "nvarchar"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"AuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"SessionCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"RolesHash": {
"type": "string",
"description": "varbinary"
},
"UserId": {
"type": "string",
"description": "FK to IAM.Users"
},
"DeviceDescription": {
"type": "string",
"description": "nvarchar"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"UserIdentifier": {
"type": "string",
"description": "nvarchar"
},
"PermissionsHash": {
"type": "string",
"description": "varbinary"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
}
},
"type": "object"
}
},
"title": "IAM.User",
"$comment": "Generated from Mermaid ERD with property-level descriptions",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}Team
Aggregate Root: Team
Represents teams of users for organizational and collaborative purposes.
erDiagram
"IAM.TeamMemberSet" {
uniqueidentifier Id PK
uniqueidentifier TeamId FK
uniqueidentifier UserId FK
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.Teams" {
uniqueidentifier Id PK
nvarchar TeamName
nvarchar TeamDescription
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.TeamMemberSet" }o--|| "IAM.Teams" : "TeamId"
"IAM.TeamMemberSet" }o--|| "IAM.Users" : "UserId"
erDiagram
"IAM.TeamMemberSet" {
uniqueidentifier Id PK
uniqueidentifier TeamId FK
uniqueidentifier UserId FK
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.Teams" {
uniqueidentifier Id PK
nvarchar TeamName
nvarchar TeamDescription
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit Concealed
}
"IAM.TeamMemberSet" }o--|| "IAM.Teams" : "TeamId"
"IAM.TeamMemberSet" }o--|| "IAM.Users" : "UserId"
{
"definitions": {
"IAM.TeamMemberSet": {
"properties": {
"Concealed": {
"type": "boolean",
"description": "bit"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"TeamId": {
"type": "string",
"description": "FK to IAM.Teams"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"UserId": {
"type": "string",
"description": "FK to IAM.Users"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
}
},
"type": "object"
},
"IAM.Teams": {
"properties": {
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"TeamDescription": {
"type": "string",
"description": "nvarchar"
},
"Concealed": {
"type": "boolean",
"description": "bit"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"TeamName": {
"type": "string",
"description": "nvarchar"
}
},
"type": "object"
}
},
"title": "IAM.Team",
"$comment": "Generated from Mermaid ERD with property-level descriptions",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}User Group
Aggregate Root: UserGroup
Represents groups of users for access control and permission management.
erDiagram
"IAM.UserGroups" {
uniqueidentifier Id PK
nvarchar GroupName
nvarchar GroupDescription
nvarchar Email
bit IsTaskGroup
bit IsActive
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar ShortName
nvarchar ColorCode
bit HasAvatar
uniqueidentifier DirectoryGuid
bit Concealed
}
"IAM.UsersInUserGroup" }o--|| "IAM.UserGroups" : "UserGroupId"
erDiagram
"IAM.UserGroups" {
uniqueidentifier Id PK
nvarchar GroupName
nvarchar GroupDescription
nvarchar Email
bit IsTaskGroup
bit IsActive
uniqueidentifier Tenant
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
nvarchar ShortName
nvarchar ColorCode
bit HasAvatar
uniqueidentifier DirectoryGuid
bit Concealed
}
"IAM.UsersInUserGroup" }o--|| "IAM.UserGroups" : "UserGroupId"
{
"definitions": {
"IAM.UserGroups": {
"properties": {
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"HasAvatar": {
"type": "boolean",
"description": "bit"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Concealed": {
"type": "boolean",
"description": "bit"
},
"IsActive": {
"type": "boolean",
"description": "bit"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"DirectoryGuid": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"ColorCode": {
"type": "string",
"description": "nvarchar"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"GroupDescription": {
"type": "string",
"description": "nvarchar"
},
"GroupName": {
"type": "string",
"description": "nvarchar"
},
"IsTaskGroup": {
"type": "boolean",
"description": "bit"
},
"ShortName": {
"type": "string",
"description": "nvarchar"
},
"Email": {
"type": "string",
"description": "nvarchar"
}
},
"type": "object"
}
},
"title": "IAM.UserGroup",
"$comment": "Generated from Mermaid ERD with property-level descriptions",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}Application Tenant
Aggregate Root: ApplicationTenant
Represents tenants in the multi-tenant application architecture for data isolation and management.
erDiagram
"IAM.ApplicationTenants" {
uniqueidentifier Id PK
uniqueidentifier ParentApplicationTenantId FK
nvarchar Name
nvarchar Description
int MarketRole
uniqueidentifier Tenant
nvarchar _ean
int LevelType
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit HasAvatar
bit Concealed
}
"IAM.ApplicationTenants" }o--|| "IAM.ApplicationTenants" : "ParentApplicationTenantId"
erDiagram
"IAM.ApplicationTenants" {
uniqueidentifier Id PK
uniqueidentifier ParentApplicationTenantId FK
nvarchar Name
nvarchar Description
int MarketRole
uniqueidentifier Tenant
nvarchar _ean
int LevelType
datetimeoffset EntityCreatedDateTime
datetimeoffset EntityUpdatedDateTime
uniqueidentifier EntityCreatedAuthToken
uniqueidentifier EntityUpdatedAuthToken
bit HasAvatar
bit Concealed
}
"IAM.ApplicationTenants" }o--|| "IAM.ApplicationTenants" : "ParentApplicationTenantId"
{
"definitions": {
"IAM.ApplicationTenants": {
"properties": {
"Concealed": {
"type": "boolean",
"description": "bit"
},
"_ean": {
"type": "string",
"description": "nvarchar"
},
"EntityUpdatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Name": {
"type": "string",
"description": "nvarchar"
},
"EntityCreatedAuthToken": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"EntityUpdatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"MarketRole": {
"type": "integer",
"description": "int"
},
"LevelType": {
"type": "integer",
"description": "int"
},
"Tenant": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"Description": {
"type": "string",
"description": "nvarchar"
},
"Id": {
"format": "uuid",
"description": "uniqueidentifier",
"type": "string"
},
"HasAvatar": {
"type": "boolean",
"description": "bit"
},
"EntityCreatedDateTime": {
"format": "date-time",
"description": "datetimeoffset",
"type": "string"
},
"ParentApplicationTenantId": {
"type": "string",
"description": "FK to IAM.ApplicationTenants"
}
},
"type": "object"
}
},
"title": "IAM.ApplicationTenant",
"$comment": "Generated from Mermaid ERD with property-level descriptions",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}