1.3 Members and Organizational Structure
Informat adopts a multi-tenant architecture, and users in the system are divided into three types: System Account (Account), Team Member (CompanyMember), and Application Member (User). System accounts are added through registration or the admin backend. Each Account can join multiple teams as a CompanyMember, and each CompanyMember can join multiple Applications as a User within the team. Each team member can belong to one or more Departments (Dept), and there are parent-child relationships between departments. Each department can have one or more CompanyMembers as department heads.

1.3.1 System Account
System accounts come from the following sources:
- Self-registration by users
- Addition by system administrators through the backend
- Addition by calling the
informat.system.addAccount()function in scripts
In the admin backend, operations such as disabling all accounts in the system and forcing password changes can be performed. A system account is only a credential for logging into Informat. Without joining a team, no operations can be performed after logging into the system.
1.3.2 Team Member
A system account can join multiple teams. In each team, a CompanyMember is assigned different Team Roles. Team roles are associated with their operable permissions, and team members can have multiple roles. For information on role permissions, please refer to Role Permissions. Each team has two default roles:
Admin: Has all permissions and can design applicationsMember: Only has permission to use applications
When joining a team, the Department (Dept) to which the team member belongs also needs to be set.

Team members come from the following sources:
- After creating an account, the user creates a team on their own and adds themselves to the team with the
Adminrole - Joining a team after accepting an invitation
- Addition by an administrator through the admin backend
- Addition by calling the
informat.company.addCompanyMember()function in scripts
Team members can be removed through the following methods:
- Removal in the admin backend
- Voluntary withdrawal by the user
- Removal by calling the
informat.company.deleteCompanyMember()function in scripts
1.3.3 Application Member
Team members can join multiple applications. In each application, a User is assigned different Application Roles. Application roles are associated with their operable permissions, and Users can have multiple roles.
Each application has a default Admin role with all permissions.

Application members come from the following sources:
- Addition by the application administrator to the application
- The application administrator sets the application authorization method to
Authorization by Role and Department, and theTeam Member'sdepartment or team role falls within the authorized scope - Addition by calling the
informat.user.addUser()function in scripts
Application members can be removed through the following methods:
- Removal by the application administrator
- If the authorization method when joining is
Authorization by Role and Department, and theTeam Member'sdepartment or team role is no longer within the authorized scope - Removal by calling the
informat.user.deleteUser()function in scripts
1.3.4 Department
In each team, a department organizational structure tree can be built to meet the needs of organizational structure management. Each user must join at least one department, and the user's department list is recorded in departmentList in the user information.

Departments come from the following sources:
- After team deployment, the team is automatically created with the team name
- The application administrator creates departments independently
- Creation by calling the
informat.dept.addDept()function in scripts
Departments can be removed through the following methods:
- Removal by the application administrator
- Removal by calling the
informat.dept.deleteDept()function in scripts

