This article provides a mapping of our Legacy SQL Analytics system, giving an overview of the tables available and the data points they contain. Each table name is displayed in bold, and by expanding the corresponding drop-down, clients can explore the available data points, what each field represents, and how the data can be used.
The article also explains how the different tables are connected, including relevant relationships and examples of how they can be combined for reporting and analysis. This mapping is designed to help clients understand the structure of the Legacy SQL Analytics system and identify the right tables and data points for their specific reporting needs.
Documentation table
additional_compensations
Contains additional compensations configured in employee contracts. This table stores fixed additional payments or benefits assigned to employees as part of their contract configuration.
Entity
Compensation / Contracts / Employees
Use Cases
- Total compensation analysis
- Employee compensation structure analysis
- Labor cost prediction
- Identification of compensation patterns
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique compensation identifier |
contract_id |
Number (FK) | Relation to employee contract |
employee_id |
Number (FK) | Relation to employee |
Relationships
-
additional_compensations.contract_id→contracts.id -
additional_compensations.employee_id→employees.id
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
title |
String | Name of the additional compensation |
description |
String | Compensation details |
recurrence |
String | Payment recurrence/frequency |
first_payment |
Date | Date of the first scheduled payment |
type |
String | Compensation type/category |
amount |
Number | Configured compensation amount |
Features
-
amount→ additional compensation value -
type→ compensation category analysis -
recurrence→ payment frequency patterns -
contract_id→ compensation analysis by contract -
employee_id→ employee compensation history
Notes
- Contains only additional compensations configured directly in employee contracts.
- Values and amounts are usually stored and displayed using the decimal number system.
- It should not be used for variable payments, bonuses, or dynamic compensations.
- For variable compensation data, bonuses, or dynamic payments use the
supplementstable.
ats_applications
Contains all candidate applications for job postings published through ATS. Stores candidate information, application source, qualification status, and current stage within the recruitment process.
Entity
Recruitment / Candidates / Applications
Use Cases
- Recruitment source effectiveness analysis
- Candidate progression prediction
- Hiring funnel analysis
- Identification of recruitment patterns
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique application identifier |
ats_job_posting_id |
Number (FK) | Relation to the job posting |
employee_id |
Number (FK) | Relation to employee when the candidate is hired |
Relationships
-
ats_applications.ats_job_posting_id→ats_job_postings.id -
ats_applications.employee_id→employees.id
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
first_name |
String | Candidate first name |
last_name |
String | Candidate last name |
email |
String | Candidate email |
talent_pool |
Boolean | Indicates if the candidate belongs to a talent pool |
source |
String | Origin source of the application |
medium |
String | Channel used to acquire the candidate |
qualified |
Boolean | Candidate qualification status |
phase |
String | Current stage within the ATS process |
created_at |
Date | Application creation date |
Features
-
source→ candidate source performance analysis -
medium→ recruitment channel effectiveness -
qualified→ candidate evaluation outcome -
phase→ recruitment funnel progression -
created_at→ application volume and recruitment trends over time -
ats_job_posting_id→ candidate behavior analysis by job posting
Notes
- Each record represents a candidate application for an ATS job posting.
- The table enables analysis of the recruitment pipeline from initial application to candidate qualification.
- Job posting details should be obtained through the relationship with
ats_job_postings. - The relationship with
employeesallows identifying when an application results in a hire.
ats_job_posting
Contains all job postings created and published through ATS. Stores position information, publication status, remote configuration, creation date, department, and associated office.
Entity
Recruitment / Job Postings / Positions
Use Cases
- Job posting performance analysis
- Hiring demand prediction
- Recruitment channel analysis by position
- Identification of hiring trends
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique job posting identifier |
Relationships
-
ats_job_postings.id→ats_applications.ats_job_posting_id
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
title |
String | Name of the published position |
status |
String | Job posting status (published, draft, unlisted) |
remote |
Boolean | Indicates if the position is remote |
created_at |
Date | Job posting creation date |
department |
String | Department or area associated with the position |
office |
String | Office/location associated with the job posting |
Features
-
status→ job posting lifecycle analysis -
title→ position classification and analysis -
remote→ impact of remote positions on applications -
created_at→ job opening trends over time -
department→ hiring demand analysis by area -
office→ recruitment patterns by location
Notes
- Contains information about job postings created within ATS.
- The
statusfield allows differentiation between active, draft, and hidden/unlisted vacancies. - The relationship with
ats_applicationsallows analyzing candidate volume per vacancy and candidate progression through the recruitment process. -
departmentandofficefields allow segmentation of hiring analysis by organizational structure and location.
company_holidays
Contains company holidays and non-working days configured in the platform. Stores holiday information, whether it applies as a half-day, the effective date, and optional employee assignment when the holiday is specific to an employee.
Entity
Time Management / Holidays / Employees / Attendance
Use Cases
- Attendance and absence pattern analysis
- Workforce availability adjustment
- Non-working day impact prediction
- Productivity analysis considering working calendars
- Regional/company holiday trend analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique holiday identifier |
employee_id |
Number (FK) | Employee relation when the holiday is employee-specific |
Relationships
Common relationships:
-
company_holidays.employee_id→employees.idPurpose: Identify holidays assigned to specific employees. -
employees.idPurpose: Analyze holidays by employee, team, office, country, or organizational structure. -
daily_time_configs.employee_id→employees.idPurpose: Compare holidays against employee schedules and adjust expected working hours. -
daily_time_configs.date→company_holidays.datePurpose: Identify days where employees should not have expected working hours. -
leaves.employee_id→employees.idPurpose: Differentiate employee-requested absences from company-configured non-working days. - Attendance / timesheet-related tablesPurpose: Exclude holidays from attendance metrics, punctuality calculations, worked hours, and absence analysis.
-
contracts.employee_id→employees.idPurpose: Analyze holiday impact based on contracts, employee groups, or workforce segments.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
summary |
String | Holiday name or description |
half_day |
Boolean | Indicates if the holiday applies only as a half-day |
date |
Date | Holiday effective date |
employee_id |
Number | Associated employee when applicable |
Features
-
date→ temporal analysis, seasonality, and productivity impact -
half_day→ workforce availability adjustment -
summary→ holiday type classification -
employee_id→ employee availability patterns - Holiday frequency → impact analysis on available working days and planning
Notes
- Represents non-working days configured at company level or assigned to specific employees.
-
employee_idcan be empty when the holiday applies globally. -
half_day = trueindicates reduced availability for that date, not necessarily a full non-working day. - Commonly used with
daily_time_configsto calculate expected working hours correctly. - Should be considered in attendance, absence, worked hours, and productivity reports.
- Unlike
leaves, holidays are not employee requests; they are part of the configured working calendar.
contracts
Contains employee contract information. Stores data related to contract type, effective dates, employment conditions, working schedule, salary, professional category, and employment configuration.
It is one of the main tables for analyzing workforce structure, labor costs, employee lifecycle, and workforce management.
Entity
Employees / Contracts / Payroll / Workforce Management
Use Cases
- Workforce structure analysis
- Employee cost analysis
- Headcount management
- Hiring and termination analysis
- Workforce planning
- Contract condition tracking
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique contract identifier |
employee_id |
Number (FK) | Employee relation |
Relationships
-
contracts.employee_id→employees.idPurpose: Retrieve employee information associated with the contract. -
contracts.id→additional_compensations.contract_idPurpose: Relate fixed additional compensations configured within the employee contract. -
contracts.id→supplements.contract_idPurpose: Relate variable payments, bonuses, and additional compensation linked to the contract. -
contracts.employee_id→leaves.employee_idPurpose: Apply contractual conditions in absence-related calculations. -
contracts.employee_id→ attendance / timesheet tablesPurpose: Compare contractual working hours against actual worked hours. -
contracts.employee_id→company_holidays.employee_idPurpose: Consider working calendars and employee availability.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
job_title |
String | Employee position/title |
job_catalog_level |
String | Job catalog level |
contract_date |
Date | Contract creation date |
hiring_link |
String | Hiring reference information |
starts_on |
Date | Contract start date |
ends_on |
Date | Contract end date |
effective_on |
Date | Date when contract conditions become effective |
has_payroll |
Boolean | Indicates if the contract is included in payroll |
current_contract |
Boolean | Indicates if it is the active contract |
salary_amount |
Number | Configured salary amount |
salary_frequency |
String | Salary payment frequency |
working_week_days |
Number | Contractual working days per week |
working_hours |
Number | Configured working hours |
working_hours_frequency |
String | Working hours frequency |
contract_type |
String | Contract type |
professional_category |
String | Professional category |
antiquity |
Number | Employee seniority |
work_schedule_type |
String | Work schedule type |
termination_reason |
String | Contract termination reason |
contract_code |
String | Contract identifier/code |
total_yearly_contract_salary |
Number | Total yearly contract salary |
total_monthly_contract_salary |
Number | Total monthly contract salary |
yearly_contract_salary |
Number | Yearly salary |
monthly_contract_salary |
Number | Monthly salary |
variable_yearly_contract_salary |
Number | Yearly variable salary component |
hourly_contract_salary |
Number | Hourly salary |
weekly_workschedule_hours |
Number | Weekly scheduled hours |
monthly_workschedule_hours |
Number | Monthly scheduled hours |
daily_workschedule_hours |
Number | Daily scheduled hours |
weekly_workschedule_days |
Number | Weekly scheduled days |
trial_period_ends_on |
Date | Trial period end date |
trial_period |
Number | Trial period duration |
max_legal_yearly_hours |
Number | Maximum legal yearly hours |
maximum_weekly_hours |
Number | Maximum weekly hours |
Features / Relevant Data
-
contract_type→ employee segmentation by employment model -
starts_on/ends_on→ employee lifecycle analysis -
salary_amount→ labor cost analysis -
working_hours→ workforce capacity analysis -
job_title→ position classification -
professional_category→ organizational structure analysis -
antiquity→ employee tenure analysis -
termination_reason→ turnover analysis -
current_contract→ active contract identification -
additional_compensations→ fixed additional compensation analysis -
supplements→ variable compensation and additional payments analysis
Notes
- Can contain custom fields created by clients, depending on each company’s configuration.
- Monetary values are usually stored and displayed using the decimal number system.
- An employee can have multiple historical contracts;
current_contractidentifies the active contract. - Used for headcount reports, identifying active employees and workforce evolution.
- Used for hiring and termination analysis, using start dates, end dates, and contract status.
- Used in the leaves solution for calculations related to absences and distribution of days/hours according to contractual conditions.
- It is a key table for workforce analysis, compensation, planning, and HR reporting.
Related cohort tables: contracts_cohort_by_day, contracts_cohort_by_month, and contracts_cohort_by_year provide historical snapshots of the same data at different time granularities, enabling point-in-time analysis without relying on the current contract state.
contracts_cohort_by_day
Daily snapshot of the contracts table. Stores contract information as it existed on each day, allowing historical analysis of contract changes over time.
Entity
Employees / Contracts / Historical Snapshots
Use Cases
- Daily headcount evolution
- Historical contract analysis
- Workforce changes over time
- Point-in-time reporting
Notes
- Contains the same fields as
contracts. - Each record represents the contract state for a specific day.
- Used when historical daily reporting is required instead of the current contract information.
contracts_cohort_by_month
Monthly snapshot of the contracts table. Stores contract information at a monthly granularity for historical workforce analysis.
Entity
Employees / Contracts / Historical Snapshots
Use Cases
- Monthly headcount analysis
- Workforce evolution
- Historical salary and contract reporting
- Monthly HR analytics
Notes
- Contains the same fields as
contracts. - Each record represents the contract state for a specific month.
- Optimized for monthly trend analysis.
contracts_cohort_by_year
Yearly snapshot of the contracts table. Stores contract information at a yearly granularity for long-term historical analysis.
Entity
Employees / Contracts / Historical Snapshots
Use Cases
- Year-over-year workforce analysis
- Long-term contract evolution
- Annual HR reporting
- Historical compensation trends
Notes
- Contains the same fields as
contracts. - Each record represents the contract state for a specific year.
- Optimized for annual reporting and long-term trend analysis.
custom-resources-competencies-v2-nineboxes
Data related to the 9 box grid.
custom_tables_employees
Contains information stored in Custom Tables created by each company. The structure of this table is dynamic and depends entirely on the custom fields configured by the client.
Initially, the table only contains employee_id. As new fields are added to a Custom Table, they will automatically appear as additional exposers in this dataset.
Entity
Employees / Custom Tables / Custom Fields
Use Cases
- Store custom employee information.
- Extend the data model without modifying standard tables.
- Build reports using company-specific data.
- Analyze business-specific attributes.
Keys
| Field | Type | Usage |
|---|---|---|
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
custom_tables_employees.employee_id→employees.idPurpose: Associate custom information with an employee.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
employee_id |
Number | Employee associated with the Custom Table record |
Custom fields created by the client will automatically appear as new columns in this table. Their data type depends on the field configuration (String, Number, Date, Boolean, etc.).
Features / Relevant Data
- Allows completely custom employee attributes to be incorporated into the data model.
- The table structure varies from one company to another.
- Custom fields can be used for segmentation, reporting, or company-specific analysis.
Notes
- This is a dynamic table; its structure is not fixed.
- Each company may have different columns depending on the Custom Tables and Custom Fields they have configured.
- At the moment, it only exposes
employee_iduntil custom fields are created by the client. - Custom fields are exposed using internal identifiers (IDs) rather than human-readable field names, making it necessary to map each ID to its corresponding field definition. This may complicate data interpretation and AI consumption.
- It is commonly joined with
employeesto enrich employee information with company-specific attributes.
daily_time_configs
Contains aggregated daily Time Tracking information. Unlike the shifts table, which stores transactional clock-in and clock-out records, this table provides pre-calculated daily metrics, making it the recommended dataset for reporting and time calculations.
Entity
Time Tracking / Attendance / Employees
Use Cases
- Time Tracking reports
- Worked hours calculations
- Planned vs. worked hours analysis
- Time balance calculations
- Productivity reporting
- Overtime calculations
- Attendance compliance reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Daily record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
daily_time_configs.employee_id→employees.idPurpose: Retrieve employee information. -
daily_time_configs.date→company_holidays.datePurpose: Identify company holidays and adjust expected working hours. -
daily_time_configs.employee_id→leaves.employee_idPurpose: Analyze absences together with worked hours. -
daily_time_configs.employee_id→contracts.employee_idPurpose: Compare contractual hours against worked hours. -
daily_time_configs.date→shifts.datePurpose: Retrieve transactional clock-in details when needed.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
estimated_hours |
Number | Expected working hours for the day |
worked_hours |
Number | Worked hours considered for Time Tracking |
worked_hours_in_schedule |
Number | Worked hours within the planned schedule |
worked_hours_out_schedule |
Number | Worked hours outside the planned schedule |
tracked_hours |
Number | Total tracked hours from clock-ins |
balance |
Number | Difference between worked and expected hours |
date |
Date | Record date |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
estimated_hours→ expected workforce capacity -
worked_hours→ daily productivity analysis -
balance→ deviation from expected working hours -
worked_hours_in_schedule→ schedule compliance -
worked_hours_out_schedule→ work performed outside scheduled hours -
tracked_hours→ total recorded working time -
date→ time-series and trend analysis
Notes
- This is an aggregated dataset and does not store individual clock-in transactions.
- Unlike
shifts, it does not provide clock-in/out timestamps, device information, or clock-in type. - It is the recommended table for Time Tracking calculations and reporting, while
shiftsshould be used when transaction-level details are required. - Days without scheduled working time are still included in the dataset, with
estimated_hours = 0, allowing continuous date-based reporting without generating missing dates. - Commonly used for overtime calculations, worked hours analysis, attendance reporting, productivity metrics, and schedule compliance.
- This table must be enabled through the feature flag
dev_time_tracking_daily_time_configs. After enabling it, the Reports tool must be refreshed for the exposers to become available. - Time values are generally stored and displayed using the decimal number system (e.g.,
7.50hours).
documents
Contains all documents associated with employees within the platform. Stores information about uploaded files, document type, approval status, signature status, and relationships with other entities such as leaves and custom fields.
In addition to general employee documents, this table also includes documents uploaded as supporting evidence for employee leaves through the leave_id relationship.
Entity
Documents / Employees / Leaves
Use Cases
- Employee document management
- Signed and pending document tracking
- Leave supporting document validation
- Document auditing
- Compliance analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique document identifier |
employee_id |
Number (FK) | Relation to the employee |
leave_id |
Number (FK) | Relation to the associated leave |
Relationships
-
documents.employee_id→employees.idPurpose: Retrieve the employee who owns the document. -
documents.leave_id→leaves.idPurpose: Associate supporting documents with employee leave requests. -
documents.created_by→employees.id*(when applicable)*Purpose: Identify the user who created or uploaded the document. -
documents.custom_field_*→ Custom FieldsPurpose: Store company-specific information configured through custom document fields.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
filename |
String | Document file name |
download_url |
String | URL to download the document |
type |
String | Document type or category |
content_type |
String | MIME type of the uploaded file |
created_at |
Date | Document creation/upload date |
created_by |
Number | User who created the document |
link |
String | Link associated with the document |
approval_status |
String | Document approval status |
signature_status |
String | Document signature status |
custom_field_* |
Varies | Custom fields associated with the document |
leave_id |
Number | Associated leave request (when applicable) |
employee_id |
Number | Employee who owns the document |
Features / Relevant Data
-
type→ document classification -
approval_status→ approval workflow analysis -
signature_status→ signature compliance analysis -
created_at→ document activity trends -
leave_id→ leave supporting documentation analysis -
content_type→ file format classification
Notes
- Contains both general employee documents and documents associated with specific processes, such as leave requests.
- Documents related to employee absences can be identified through
leave_id. - Allows tracking of both document approval and signature status.
- May contain custom fields created by each company, which will appear as additional exposers (
custom_field_<id>). - Custom fields are exposed using internal IDs rather than descriptive field names, requiring an additional mapping to correctly interpret their business meaning. This may make AI consumption and interpretation more challenging.
-
download_urlandlinkprovide access to the document when the user has the appropriate permissions. - This table is commonly used for compliance processes, HR audits, document management, and leave validation.
employee_costs
Contains employee payroll cost center allocations. Stores the cost center assigned to each employee, including the cost center name, code, and the percentage of dedication allocated to each cost center.
This table is commonly used to distribute labor costs across multiple cost centers for payroll and financial reporting.
Entity
Payroll / Cost Centers / Employees
Use Cases
- Payroll cost allocation
- Cost center reporting
- Workforce cost analysis
- Financial and accounting reporting
- Employee dedication analysis across cost centers
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique cost allocation identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
employee_costs.employee_id→employees.idPurpose: Associate cost center allocations with employees. -
employee_costs.employee_id→contracts.employee_idPurpose: Analyze labor costs together with contractual information. -
employee_costs.employee_id→ Payroll-related tablesPurpose: Allocate payroll expenses across different cost centers.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
cost_center_name |
String | Name of the assigned cost center |
dedication |
Number | Percentage of employee dedication assigned to the cost center |
cost_center_code |
String | Cost center identifier/code |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
cost_center_name→ workforce distribution by cost center -
dedication→ labor cost allocation analysis -
cost_center_code→ financial reporting and accounting integration -
employee_id→ employee cost distribution analysis
Notes
- An employee can be assigned to multiple cost centers, each with a different dedication percentage.
- The
dedicationvalue is typically expressed as a percentage of the employee's allocation to a specific cost center. - Commonly used for payroll allocation, financial reporting, budgeting, and labor cost analysis.
- Frequently combined with
contractsto calculate labor costs and with payroll datasets for accounting and reporting purposes.
employee_presences
Contains the current presence status of employees within the platform. It indicates whether an employee is currently at work, on leave, or off work, providing a real-time overview of workforce availability.
Entity
Attendance / Presence / Employees
Use Cases
- Workforce availability monitoring
- Attendance dashboards
- Real-time employee presence reporting
- Operational workforce management
- Leave and attendance status analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique presence record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
employee_presences.employee_id→employees.idPurpose: Retrieve employee information. -
employee_presences.employee_id→leaves.employee_idPurpose: Validate when an employee's status is on leave. -
employee_presences.employee_id→shifts.employee_idPurpose: Compare current presence with clock-in activity. -
employee_presences.employee_id→daily_time_configs.employee_idPurpose: Analyze employee presence together with worked and expected hours.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
presence_status |
String | Current employee presence status (at_work, on_leave, off_work) |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
presence_status→ workforce availability analysis -
employee_id→ employee presence monitoring
Notes
- Represents the current presence status of each employee.
- Common statuses include
at_work,on_leave, andoff_work. - Frequently used in dashboards displaying workforce availability and operational attendance.
- Can be combined with
shifts,daily_time_configs, andleavesto provide additional context about an employee's current status. - This table reflects an employee's presence status rather than detailed attendance or time tracking records.
employees
Contains the master employee information within the platform. Stores personal details, employment status, contact information, organizational structure, legal entity, management hierarchy, identifiers, and other HR-related data.
This is one of the core tables in the data model and is commonly used as the primary dimension for joining most HR, Payroll, Time Tracking, ATS, and document-related datasets.
Entity
Employees / HR / Workforce Management
Use Cases
- Employee master data reporting
- Headcount analysis
- Workforce segmentation
- Organizational structure reporting
- Employee lifecycle analysis
- HR compliance reporting
- Employee directory
- Cross-module reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique employee identifier |
manager_id |
Number (FK) | Relation to the employee's manager |
timeoff_manager_id |
Number (FK) | Relation to the employee's Time Off approver |
Relationships
As one of the central tables in the platform, employees is commonly related to almost every HR module, including:
-
contracts.employee_id→employees.idPurpose: Retrieve contractual information. -
leaves.employee_id→employees.idPurpose: Analyze employee absences. -
daily_time_configs.employee_id→employees.idPurpose: Analyze worked hours, balances, and attendance. -
shifts.employee_id→employees.idPurpose: Retrieve transactional clock-in information. -
employee_presences.employee_id→employees.idPurpose: Determine employee availability. -
documents.employee_id→employees.idPurpose: Associate documents with employees. -
employee_costs.employee_id→employees.idPurpose: Analyze payroll cost center allocations. -
additional_compensations.employee_id→employees.idPurpose: Retrieve fixed employee compensations. -
ats_applications.employee_id→employees.idPurpose: Identify candidates hired through ATS. -
company_holidays.employee_id→employees.idPurpose: Associate employee-specific holidays. -
manager_id→employees.idPurpose: Build organizational hierarchy. -
timeoff_manager_id→employees.idPurpose: Identify the employee responsible for approving Time Off requests.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
company_identifier |
String | Internal employee identifier |
status |
String | Current employee status |
contract_version_starts_on |
Date | Contract version start date |
contract_version_effective_on |
Date | Contract version effective date |
terminated_on |
Date | Employee termination date |
termination_reason |
String | Termination reason |
termination_reason_type |
String | Termination category |
termination_type_description |
String | Termination description |
link |
String | Employee profile link |
first_name |
String | First name |
last_name |
String | Last name |
full_name |
String | Full name |
preferred_name |
String | Preferred name |
personal_email |
String | Personal email |
company_email |
String | Company email |
gender |
String | Gender |
nationality |
String | Nationality |
office |
String | Assigned office |
default_work_area |
String | Default work area |
legal_entity |
String | Legal entity |
manager |
String | Manager name |
timeoff_manager |
String | Time Off manager |
tenure_start_date |
Date | Seniority start date |
age |
Number | Employee age |
antiquity |
Number | Employee seniority |
birthday_on |
Date | Birthday |
email |
String | Primary email |
phone_number |
String | Phone number |
contact_name |
String | Emergency contact |
identifier |
String | Employee identifier |
identifier_type |
String | Identifier type |
social_security_number |
String | Social Security Number |
tax_id |
String | Tax identification number |
bank_number |
String | Bank account number |
swift_bic |
String | SWIFT/BIC code |
bank_number_format |
String | Bank account format |
address_line_1 |
String | Address line 1 |
address_line_2 |
String | Address line 2 |
city |
String | City |
postal_code |
String | Postal code |
state |
String | State/Province |
country |
String | Country |
legal_entity_country |
String | Legal entity country |
legal_entity_id |
Number | Legal entity identifier |
employee_group_name |
String | Employee group |
disability_percentage_cents |
Number | Disability percentage |
custom_field_* |
Varies | Employee custom fields |
manager_id |
Number | Manager identifier |
timeoff_manager_id |
Number | Time Off manager identifier |
Features / Relevant Data
-
status→ active/inactive workforce analysis -
office→ workforce distribution by location -
legal_entity→ legal entity segmentation -
manager_id→ organizational hierarchy -
employee_group_name→ workforce segmentation -
country→ geographical analysis -
tenure_start_date/antiquity→ employee tenure analysis -
terminated_on→ employee lifecycle analysis -
age→ workforce demographics -
custom_field_*→ client-specific employee attributes
Notes
- This is one of the core tables in the platform and is commonly used as the starting point for HR reporting.
- May contain custom fields configured from the Employee Information section. These fields are exposed following the pattern
custom_field_<id>. - Custom fields are exposed using internal IDs rather than descriptive field names, requiring an additional mapping to correctly interpret their business meaning.
- Contains personally identifiable information (PII); appropriate data governance should be considered when using this dataset.
- Frequently used for headcount, organizational charts, workforce segmentation, employee lifecycle analysis, payroll reporting, attendance reporting, and cross-module analytics.
employees_cohor_by_day
Daily snapshot of the employees table. Stores employee information as it existed on each day, enabling historical point-in-time reporting.
Entity
Employees / Historical Snapshots
Use Cases
- Daily headcount analysis
- Historical workforce reporting
- Employee lifecycle tracking
Notes
- Contains the same fields as
employees. - Each record represents the employee state for a specific day.
- Used for historical reporting instead of current employee information.
employees_cohor_by_month
Monthly snapshot of the employees table. Stores employee information at a monthly granularity for historical analysis.
Entity
Employees / Historical Snapshots
Use Cases
- Monthly workforce evolution
- Monthly headcount reporting
- Historical HR analytics
Notes
- Contains the same fields as
employees. - Each record represents the employee state for a specific month.
- Optimized for monthly trend analysis.
employees_cohor_by_year
Yearly snapshot of the employees table. Stores employee information at a yearly granularity for long-term workforce analysis.
Entity
Employees / Historical Snapshots
Use Cases
- Annual workforce reporting
- Year-over-year headcount analysis
- Historical employee trend analysis
Notes
- Contains the same fields as
employees. - Each record represents the employee state for a specific year.
- Optimized for long-term historical reporting.
expenses_expensables_group
Contains information about expense groups created by employees within the Expenses module. An expense group can contain one or multiple individual expense items related to the same business purpose, simplifying the review, approval, and reimbursement process.
This table stores general information about each group, including its name, description, status, total reimbursable amount, and reimbursement currency.
Entity
Expenses / Expense Groups / Employees
Use Cases
- Employee expense reporting
- Reimbursement request tracking
- Corporate expense analysis
- Approval workflow monitoring
- Expense auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique expense group identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
expenses_expensable_groups.employee_id→employees.idPurpose: Retrieve information about the employee who owns the expense group. -
expenses_expensable_groups.id→ individual expense tables *(when applicable)*Purpose: Associate the expense group with the individual expenses it contains.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Expense group name |
description |
String | Expense group description |
status |
String | Expense group status |
reimbursable_currency |
String | Currency of the reimbursable amount |
reimbursable_amount |
Number | Total reimbursable amount |
review_request_at |
Date | Date when the review was requested |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
status→ approval workflow analysis -
reimbursable_amount→ reimbursement and cost analysis -
reimbursable_currency→ currency distribution -
review_request_at→ review timeline analysis -
employee_id→ employee expense analysis
Notes
- An expense group can contain one or multiple individual expense items related to the same business purpose.
- The reimbursable amount represents the total amount of all expenses included in the group.
- Commonly used for financial reporting, reimbursement tracking, and expense approval workflow analysis.
- Frequently combined with
employeesto analyze expenses by employee, department, or organizational structure.
expenses_expensables
Contains detailed information about individual expense items submitted by employees within the Expenses module. Each record represents a single expense, including merchant information, category, amount, taxes, payment method, attached documents, and relationships with projects or expense groups.
This is the primary table for detailed corporate expense analysis.
Entity
Expenses / Expense Items / Employees
Use Cases
- Detailed expense reporting
- Reimbursement analysis
- Corporate expense tracking
- Approval workflow monitoring
- Project cost analysis
- Financial auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique expense identifier |
employee_id |
Number (FK) | Relation to the employee |
group_id |
Number (FK) | Relation to the expense group |
project_id |
Number (FK) | Relation to the project |
subproject_id |
Number (FK) | Relation to the subproject |
ledger_account_id |
Number (FK) | Relation to the ledger account |
card_payment_id |
Number (FK) | Relation to the corporate card payment |
Relationships
-
expenses_expensables.employee_id→employees.idPurpose: Retrieve the employee who submitted the expense. -
expenses_expensables.group_id→expenses_expensable_groups.idPurpose: Associate the expense with its expense group. -
expenses_expensables.project_id→projects.id*(when applicable)*Purpose: Allocate expenses to projects. -
expenses_expensables.subproject_id→subprojects.id*(when applicable)*Purpose: Allocate expenses to subprojects. -
expenses_expensables.ledger_account_id→ Ledger Accounts *(when applicable)*Purpose: Classify expenses for accounting purposes. -
expenses_expensables.card_payment_id→ Card Payments *(when applicable)*Purpose: Identify expenses paid using corporate cards.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
merchant_name |
String | Merchant name |
merchant_tin |
String | Merchant tax identification number |
category |
String | Expense category |
subcategory |
String | Expense subcategory |
mileage |
Number | Distance traveled |
units |
Number | Number of units |
round_trip |
Boolean | Indicates whether the trip was round-trip |
rate |
Number | Applied rate |
origin |
String | Trip origin |
destination |
String | Trip destination |
effective_on |
Date | Expense date |
currency |
String | Original expense currency |
amount |
Number | Expense amount |
vat_amount |
Number | VAT amount |
description |
String | Expense description |
creation_type |
String | Expense creation method |
reference |
String | Expense reference |
status |
String | Expense status |
review_request_at |
Date | Review request date |
approved_at |
Date | Approval date |
document_number |
String | Fiscal document number |
document_type |
String | Document type |
payment |
String | Payment type |
payment_method |
String | Payment method |
exchange_rate |
Number | Applied exchange rate |
reimbursable_currency |
String | Reimbursement currency |
reimbursable_amount |
Number | Reimbursable amount |
start_date |
Date | Start date (when applicable) |
end_date |
Date | End date (when applicable) |
spending_alert_types |
String | Spending alerts triggered |
files |
String | Attached files |
employee_id |
Number | Associated employee |
group_id |
Number | Expense group |
project_id |
Number | Associated project |
subproject_id |
Number | Associated subproject |
ledger_account_id |
Number | Ledger account |
card_payment_id |
Number | Associated corporate card payment |
Features / Relevant Data
-
category/subcategory→ expense classification -
amount→ cost analysis -
vat_amount→ tax analysis -
currency→ currency distribution -
status→ approval workflow analysis -
approved_at→ approval timeline analysis -
payment_method→ payment method analysis -
merchant_name→ vendor analysis -
project_id/subproject_id→ project cost allocation -
reimbursable_amount→ reimbursement analysis
Notes
- Each record represents a single expense item.
- Can be linked to an Expense Group through
group_id. - Supports project and subproject allocation for cost tracking.
- Includes tax information, exchange rates, original currency, and reimbursement currency.
- Corporate card transactions can be identified through
card_payment_id. - Expense records may include supporting documents through the
filesfield. - This is the primary table used for expense auditing, financial reporting, reimbursement analysis, and corporate spending control.
expenses_transactions
Contains financial transactions generated within the Expenses module. This table stores transactions associated with bank accounts or corporate cards, including the transaction amount, currency, status, transaction type, and reconciliation information.
It is primarily used to monitor payments, perform bank reconciliations, and link financial transactions to recorded expenses.
Entity
Expenses / Financial Transactions / Payments
Use Cases
- Bank reconciliation
- Payment tracking
- Financial transaction analysis
- Corporate card monitoring
- Financial auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique transaction identifier |
card_payment_id |
Number (FK) | Relation to the corporate card payment |
category_id |
Number (FK) | Relation to the financial category |
Relationships
-
expenses_transactions.card_payment_id→ Card Payments *(when applicable)*Purpose: Associate the transaction with a corporate card payment. -
expenses_transactions.category_id→ Expense Categories *(when applicable)*Purpose: Classify the transaction into a financial category. -
expenses_transactions.card_payment_id→expenses_expensables.card_payment_idPurpose: Link the financial transaction to the corresponding expense record.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
available_on |
Date | Date when the transaction became available |
amount |
Number | Transaction amount |
currency |
String | Transaction currency |
description |
String | Transaction description |
status |
String | Transaction status |
transaction_type |
String | Transaction type |
bank_account |
String | Associated bank account |
fully_reconciled_at |
Date | Date when the transaction was fully reconciled |
card_payment_id |
Number | Associated corporate card payment |
category_id |
Number | Financial category |
Features / Relevant Data
-
amount→ financial analysis -
currency→ currency distribution -
status→ reconciliation monitoring -
transaction_type→ financial movement classification -
fully_reconciled_at→ reconciliation timeline analysis -
bank_account→ bank account analysis
Notes
- Each record represents a single financial transaction.
- A transaction can be associated with an expense through
card_payment_id. -
fully_reconciled_atindicates when the transaction has been completely reconciled. - Commonly used for bank reconciliation, corporate card management, payment tracking, and financial auditing.
- Frequently combined with
expenses_expensablesto provide end-to-end visibility from the financial transaction to the recorded expense.
family_situations
Contains information related to an employee's family situation or marital status. This information is commonly used for payroll, benefits administration, legal compliance, and HR reporting.
Entity
Employees / HR / Family Information
Use Cases
- Demographic reporting
- Employee segmentation
- Payroll configuration
- Benefits analysis
- HR reporting
Keys
| Field | Type | Usage |
|---|---|---|
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
family_situations.employee_id→employees.idPurpose: Retrieve the employee associated with the family information.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
civil_status |
String | Employee's marital status |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
civil_status→ demographic segmentation -
employee_id→ employee relationship
Notes
- Typically contains a single record per employee.
- Commonly used for Payroll, benefits administration, and legal compliance, depending on each company's configuration.
- Frequently combined with
employeesto enrich demographic and administrative reporting.
finance_bank_accounts
Contains information about bank accounts configured within the Finance module. It includes account identification details, currency, bank information, beneficiary, different balance types, and the last synchronization date with the financial institution.
This table is primarily used for bank account monitoring, reconciliation processes, and liquidity analysis.
Entity
Finance / Bank Accounts
Use Cases
- Bank account monitoring
- Financial reporting
- Bank reconciliation
- Liquidity analysis
- Balance tracking
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique bank account identifier |
Relationships
-
finance_bank_accounts.currency→ Financial module currencies.Purpose: Identify the account currency. -
finance_bank_accounts.id→expenses_transactions.bank_account*(when applicable)*Purpose: Associate financial transactions with the corresponding bank account.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
currency |
String | Bank account currency |
country |
String | Country where the account is registered |
account_number |
String | Bank account number |
account_balance_cents |
Number | Total account balance |
available_balance_cents |
Number | Available balance |
pending_balance_cents |
Number | Pending balance |
beneficiary_name |
String | Account holder or beneficiary name |
bank_name |
String | Bank name |
alias |
String | Internal account alias |
last_synchronised_at |
Date | Last synchronization date |
Features / Relevant Data
-
account_balance_cents→ total account balance -
available_balance_cents→ available liquidity -
pending_balance_cents→ pending transactions -
currency→ currency distribution -
bank_name→ financial institution analysis -
last_synchronised_at→ bank synchronization monitoring
Notes
- Each record represents a bank account configured in the platform.
- Balance fields are stored in cents to avoid floating-point precision issues. Divide the values by 100 to obtain the monetary amount.
- Can be combined with
expenses_transactionsfor bank reconciliation and financial transaction tracking. - Commonly used for financial reporting, liquidity management, and bank account administration.
finance_card_payments
Contains information about payments made using corporate cards within the Finance module. It stores payment amounts, merchant information, currency, approval status, transaction type, and additional details related to validation and reconciliation processes.
This table allows corporate card transactions to be linked with expense records created in the Expenses module.
Entity
Finance / Corporate Cards / Payments
Use Cases
- Corporate card payment tracking
- Expense reconciliation
- Corporate spending analysis
- Merchant spending analysis
- Financial auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique corporate card payment identifier |
card_id |
Number (FK) | Relation to the corporate card |
Relationships
-
finance_card_payments.id→expenses_expensables.card_payment_idPurpose: Associate the corporate card payment with the recorded expense. -
finance_card_payments.id→expenses_transactions.card_payment_idPurpose: Associate the payment with the corresponding financial transaction. -
finance_card_payments.card_id→ Corporate Cards *(when applicable)*Purpose: Identify the corporate card used for the payment.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
amount_cents |
Number | Payment amount in the account currency |
currency |
String | Payment currency |
merchant_name |
String | Merchant name |
merchant_amount_cents |
Number | Amount charged by the merchant |
merchant_currency |
String | Merchant currency |
approved |
Boolean | Indicates whether the payment was approved |
status |
String | Payment status |
type |
String | Transaction type |
exchange_rate |
Number | Applied exchange rate |
label |
String | Payment label or description |
rejected_reason |
String | Rejection reason (when applicable) |
card_id |
Number | Corporate card used |
Features / Relevant Data
-
amount_cents→ spending analysis -
merchant_name→ vendor analysis -
approved→ approval rate -
status→ payment workflow monitoring -
merchant_currency→ international spending analysis -
exchange_rate→ currency conversion analysis -
type→ transaction classification
Notes
- Each record represents a single corporate card payment.
- Monetary fields (
amount_centsandmerchant_amount_cents) are stored in cents to ensure precision. Divide by 100 to obtain the monetary value. - Can be linked to
expenses_expensablesto identify the associated expense and toexpenses_transactionsto complete the financial reconciliation process. - Commonly used for corporate card auditing, automatic expense reconciliation, and corporate spending control.
finance_cardholders
Contains information about corporate cardholders within the Finance module. It stores the cardholder's contact information and links them to both a bank account and the corresponding employee.
This table acts as the bridge between employees and the corporate cards assigned to them.
Entity
Finance / Cardholders / Employees
Use Cases
- Corporate cardholder management
- Corporate card assignment
- Employee-to-card relationship tracking
- Corporate card auditing
- Linked bank account management
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique cardholder identifier |
employee_id |
Number (FK) | Relation to the employee |
bank_account_id |
Number (FK) | Relation to the bank account |
Relationships
-
finance_cardholders.employee_id→employees.idPurpose: Retrieve the employee assigned as the cardholder. -
finance_cardholders.bank_account_id→finance_bank_accounts.idPurpose: Identify the bank account associated with the cardholder. -
finance_cardholders.id→finance_cards.cardholder_idPurpose: Retrieve the corporate cards assigned to the cardholder.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
email |
String | Cardholder email address |
phone_number |
String | Phone number |
phone_country_code |
String | International phone country code |
bank_account_id |
Number | Associated bank account |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
employee_id→ cardholder assignment -
bank_account_id→ bank account relationship -
email→ cardholder identification -
phone_country_code→ geographical distribution -
phone_number→ contact information
Notes
- Each record represents a corporate cardholder.
- Serves as an intermediary entity between
employees,finance_cards, andfinance_bank_accounts. - A single cardholder may have one or multiple corporate cards assigned.
- Commonly used for corporate card administration, access control, and financial reconciliation.
finance_cards
Contains information about corporate cards configured within the Finance module. It stores card identification details, cardholder information, status, expiration dates, digital wallet support, and the associated bank account.
This table is used to manage company-issued cards and relate them to payments, financial transactions, and bank accounts.
Entity
Finance / Corporate Cards
Use Cases
- Corporate card management
- Active and inactive card monitoring
- Corporate payment method management
- Financial auditing
- Corporate card reconciliation
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique corporate card identifier |
bank_account_id |
Number (FK) | Relation to the bank account |
cardholder_id |
Number (FK) | Relation to the cardholder |
Relationships
-
finance_cards.id→finance_card_payments.card_idPurpose: Retrieve all payments made with a specific corporate card. -
finance_cards.bank_account_id→finance_bank_accounts.idPurpose: Identify the bank account linked to the card. -
finance_cards.cardholder_id→employees.id*(when applicable)*Purpose: Identify the employee assigned as the cardholder.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
full_name |
String | Cardholder name |
phone_number |
String | Associated phone number |
last4 |
String | Last four digits of the card |
status |
String | Card status |
type |
String | Card type |
exp_month |
Number | Expiration month |
exp_year |
Number | Expiration year |
created_at |
Date | Card creation date |
alias |
String | Card alias |
description |
String | Card description |
creation_source |
String | Card creation source |
apple_pay_enabled |
Boolean | Apple Pay enabled |
google_pay_enabled |
Boolean | Google Pay enabled |
bank_account_id |
Number | Associated bank account |
cardhodler_id |
Number | Assigned cardholder |
Features / Relevant Data
-
status→ active/inactive card analysis -
type→ card classification -
exp_month/exp_year→ expiration monitoring -
apple_pay_enabled→ Apple Pay adoption -
google_pay_enabled→ Google Pay adoption -
creation_source→ card issuance source -
bank_account_id→ bank account distribution
Notes
- Each record represents a single corporate card.
- A card can be linked to a bank account through
bank_account_id. - A card can be assigned to an employee through
cardholder_id. - Transactions made with the card can be retrieved from
finance_card_payments. - The
last4field provides a secure way to identify a card without exposing the full card number. - Commonly used for corporate card administration, financial reconciliation, and corporate spending management.
The exposer appears as cardhodler_id, but it most likely represents cardholder_id (assigned cardholder). If documenting the raw schema, keep the original exposer name and optionally note the apparent typo.
finance_categories
Contains the financial categories used within the Finance module to classify transactions, expenses, and other financial movements. Categories can be organized hierarchically using parent-child relationships, allowing for a structured financial classification.
This table helps standardize and organize financial information for reporting and accounting purposes.
Entity
Finance / Categories
Use Cases
- Expense classification
- Transaction classification
- Financial reporting
- Accounting
- Category-based analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique category identifier |
parent_category_id |
Number (FK) | Relation to the parent category |
Relationships
-
finance_categories.id→expenses_transactions.category_idPurpose: Classify financial transactions. -
finance_categories.parent_category_id→finance_categories.idPurpose: Build the category hierarchy (parent/child).
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
label |
String | Display name of the category |
default_label |
String | Default category name |
identifier |
String | Internal category identifier |
protected |
Boolean | Indicates whether the category is protected from modification |
visible |
Boolean | Indicates whether the category is visible to users |
enabled |
Boolean | Indicates whether the category is enabled |
parent_category_id |
Number | Parent category identifier |
Features / Relevant Data
-
label→ financial classification -
protected→ system category identification -
visible→ user availability -
enabled→ active/inactive category analysis -
parent_category_id→ category hierarchy
Notes
- Each record represents a financial category.
- Categories can be organized into a hierarchical structure using
parent_category_id. - Categories marked as
protectedare typically system-defined and may have editing restrictions. - Primarily used to classify financial transactions and expenses across Finance modules.
- Frequently related to
expenses_transactionsfor category-based financial reporting and analysis.
finance_ledger_accounts
Contains the Chart of Accounts (Ledger Accounts) used within the Finance module. These accounts are used to classify expenses, financial transactions, and other accounting movements, while also being associated with specific legal entities.
This table is essential for accounting integrations and financial reporting.
Entity
Finance / Ledger Accounts / Accounting
Use Cases
- Expense accounting classification
- Accounting integrations
- Financial reporting
- Legal entity segmentation
- Financial auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique ledger account identifier |
legal_entity_id |
Number (FK) | Relation to the legal entity |
parent_legal_entity_id |
Number (FK) | Relation to the parent legal entity |
Relationships
-
finance_ledger_accounts.id→expenses_expensables.ledger_account_idPurpose: Classify expenses for accounting purposes. -
finance_ledger_accounts.legal_entity_id→employees.legal_entity_id*(when applicable)*Purpose: Associate ledger accounts with a specific legal entity. -
finance_ledger_accounts.parent_legal_entity_id→ Parent Legal Entities *(when applicable)*Purpose: Organize ledger accounts according to the organizational structure.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Ledger account name |
number |
String | Account number or accounting code |
legal_entity_id |
Number | Associated legal entity |
parent_legal_entity_id |
Number | Parent legal entity |
type |
String | Ledger account type |
currency |
String | Account currency |
external_id |
String | External identifier associated with the ledger account, when available |
Features / Relevant Data
-
type→ accounting classification -
currency→ currency analysis -
legal_entity_id→ legal entity segmentation -
number→ accounting identification -
external_id→ external integration reference
Notes
- Each record represents a ledger account within the organization's Chart of Accounts.
- Primarily used to classify expenses and financial transactions for accounting purposes.
- Can be linked to
expenses_expensablesthroughledger_account_id. - Frequently used to generate accounting and financial reports grouped by legal entity and chart of accounts.
forfait_jours_by_months
Contains the monthly summary for employees subject to the Forfait Jours working scheme. It records, for each day of the month, whether the employee worked, was absent, and the corresponding leave type.
This table is intended for employees whose workload is measured in worked days rather than worked hours, making it particularly useful for labor compliance in countries such as France.
Entity
Time Tracking / Forfait Jours
Use Cases
- Forfait Jours reporting
- Worked day tracking
- Leave monitoring
- Labor compliance
- Monthly activity summaries
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
forfait_jours_by_months.employee_id→employees.idPurpose: Retrieve employee information. -
forfait_jours_by_months.employee_id+date→leaves.employee_idPurpose: Retrieve leave details recorded for the day. -
forfait_jours_by_months.employee_id+date→daily_time_configs.employee_id*(when applicable)*Purpose: Compare worked days with recorded activity. -
forfait_jours_by_months.employee_id+date→shifts.employee_id*(when applicable)*Purpose: Validate attendance records for the day.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Record date |
shift_worked |
Boolean | Indicates whether the employee worked that day |
absence_duration |
Number | Leave duration |
absence_type |
String | Leave type |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
shift_worked→ worked day analysis -
absence_duration→ leave analysis -
absence_type→ leave classification -
date→ monthly activity analysis
Notes
- Each record represents one day within the monthly summary of an employee under the Forfait Jours working scheme.
- This table is specifically intended for organizations managing employees under Forfait Jours, where working time is measured in days instead of hours.
- It is commonly combined with
employees,leaves,daily_time_configs, andshiftsto build comprehensive attendance and activity reports. - It can be used to calculate worked days, leave days, and compliance with the Forfait Jours working scheme.
forfait_jours_by_months_cohort_by_day
Contains a daily snapshot of the data stored in forfait_jours_by_months. It allows historical analysis by preserving the state of Forfait Jours records as they existed during a specific period, making it suitable for auditing and retrospective reporting.
Entity
Time Tracking / Forfait Jours Snapshot
Use Cases
- Historical auditing
- Historical Forfait Jours reporting
- Activity comparisons
- Change tracking
- Compliance analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
forfait_jours_by_months_cohort_by_day.employee_id→employees.idPurpose: Retrieve employee information. -
forfait_jours_by_months_cohort_by_day.employee_id+date→leaves.employee_id*(when applicable)*Purpose: Retrieve the corresponding leave information. -
forfait_jours_by_months_cohort_by_day.employee_id+date→daily_time_configs.employee_id*(when applicable)*Purpose: Compare historical records with daily tracked activity. -
forfait_jours_by_months_cohort_by_day.employee_id+date→shifts.employee_id*(when applicable)*Purpose: Validate attendance records for the day.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Record date |
shift_worked |
Boolean | Indicates whether the employee worked that day |
absence_duration |
Number | Leave duration |
absence_type |
String | Leave type |
cohort_start_date |
Date | Snapshot period start date |
cohort_end_date |
Date | Snapshot period end date |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
shift_worked→ historical worked day analysis -
absence_duration→ historical leave analysis -
absence_type→ historical leave classification -
cohort_start_date/cohort_end_date→ represented snapshot period
Notes
- Maintains the same functional structure as
forfait_jours_by_months, adding the snapshot period throughcohort_start_dateandcohort_end_date. - Preserves the historical state of Forfait Jours records instead of only exposing the current data.
- Particularly useful for audits, historical comparisons, and compliance reporting.
- Recommended whenever historical evolution needs to be analyzed rather than the current state of the data.
forfait_jours_by_months_cohort_by_month
Contains a monthly snapshot of the data stored in forfait_jours_by_months. It preserves the historical state of Forfait Jours records at the end of each month, making it suitable for retrospective analysis, monthly comparisons, and auditing.
Entity
Time Tracking / Forfait Jours Snapshot
Use Cases
- Historical monthly reporting
- Auditing
- Monthly comparisons
- Activity tracking
- Compliance analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
forfait_jours_by_months_cohort_by_month.employee_id→employees.idPurpose: Retrieve employee information. -
forfait_jours_by_months_cohort_by_month.employee_id+date→leaves.employee_id*(when applicable)*Purpose: Retrieve the corresponding leave information. -
forfait_jours_by_months_cohort_by_month.employee_id+date→daily_time_configs.employee_id*(when applicable)*Purpose: Compare historical records with daily tracked activity. -
forfait_jours_by_months_cohort_by_month.employee_id+date→shifts.employee_id*(when applicable)*Purpose: Validate attendance records for the day.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Record date |
shift_worked |
Boolean | Indicates whether the employee worked that day |
absence_duration |
Number | Leave duration |
absence_type |
String | Leave type |
cohort_start_date |
Date | Snapshot period start date |
cohort_end_date |
Date | Snapshot period end date |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
shift_worked→ historical worked day analysis -
absence_duration→ historical leave analysis -
absence_type→ historical leave classification -
cohort_start_date/cohort_end_date→ represented snapshot period
Notes
- Maintains the same functional structure as
forfait_jours_by_months, adding the snapshot period throughcohort_start_dateandcohort_end_date. - Preserves the historical state of Forfait Jours records at the end of each month.
- Particularly useful for monthly comparisons, audits, and trend analysis.
- Recommended whenever monthly historical evolution needs to be analyzed rather than the current state of the data.
forfait_jours_by_months_cohort_by_year
Contains a yearly snapshot of the data stored in forfait_jours_by_months. It preserves the historical state of Forfait Jours records for each year, making it suitable for long-term analysis, auditing, and year-over-year comparisons.
Entity
Time Tracking / Forfait Jours Snapshot
Use Cases
- Historical yearly reporting
- Auditing
- Year-over-year comparisons
- Activity tracking
- Compliance analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique record identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
forfait_jours_by_months_cohort_by_year.employee_id→employees.idPurpose: Retrieve employee information. -
forfait_jours_by_months_cohort_by_year.employee_id+date→leaves.employee_id*(when applicable)*Purpose: Retrieve the corresponding leave information. -
forfait_jours_by_months_cohort_by_year.employee_id+date→daily_time_configs.employee_id*(when applicable)*Purpose: Compare historical records with daily tracked activity. -
forfait_jours_by_months_cohort_by_year.employee_id+date→shifts.employee_id*(when applicable)*Purpose: Validate attendance records for the day.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Record date |
shift_worked |
Boolean | Indicates whether the employee worked that day |
absence_duration |
Number | Leave duration |
absence_type |
String | Leave type |
cohort_start_date |
Date | Snapshot period start date |
cohort_end_date |
Date | Snapshot period end date |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
shift_worked→ historical worked day analysis -
absence_duration→ historical leave analysis -
absence_type→ historical leave classification -
cohort_start_date/cohort_end_date→ represented snapshot period
Notes
- Maintains the same functional structure as
forfait_jours_by_months, adding the snapshot period throughcohort_start_dateandcohort_end_date. - Preserves the historical state of Forfait Jours records for each year.
- Particularly useful for year-over-year comparisons, audits, and long-term trend analysis.
- Recommended whenever yearly historical evolution needs to be analyzed rather than the current state of the data.
forfait_jours_by_years
Contains the yearly summary for employees subject to the Forfait Jours working scheme. It records the total number of worked days during the year, the accumulated balance, and the contract used to perform the calculation.
This table is designed to analyze annual compliance with the Forfait Jours scheme, where working time is measured in days rather than hours.
Entity
Time Tracking / Forfait Jours
Use Cases
- Yearly Forfait Jours reporting
- Worked day tracking
- Annual balance monitoring
- Labor compliance
- Auditing
- Year-over-year analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique record identifier |
employee_id |
Number (FK) | Relation to the employee |
contract_id |
Number (FK) | Relation to the contract used for the calculation |
Relationships
-
forfait_jours_by_years.employee_id→employees.idPurpose: Retrieve employee information. -
forfait_jours_by_years.contract_id→contracts.idPurpose: Retrieve the contractual conditions associated with the yearly calculation. -
forfait_jours_by_years.employee_id→forfait_jours_by_months.employee_idPurpose: Compare the yearly summary with the monthly breakdown.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
worked_days_in_year |
Number | Total worked days during the year |
balance |
Number | Annual day balance |
year |
Number | Year of the record |
employee_id |
Number | Associated employee |
contract_id |
Number | Associated contract |
Features / Relevant Data
-
worked_days_in_year→ yearly worked day analysis -
balance→ annual balance monitoring -
year→ historical and year-over-year analysis
Notes
- Each record represents the yearly summary of an employee under the Forfait Jours working scheme.
- It is intended for organizations managing employees under Forfait Jours, where working time is measured in worked days rather than hours.
- It is commonly used together with
forfait_jours_by_monthsto obtain monthly details and withcontractsto validate the contract used for the calculation. - Particularly useful for auditing, labor compliance, and annual reporting.
goals_metric_groups
Contains the Goal Metric Groups used in the Performance module. Each record represents a parent goal that groups one or more individual metrics (goals_metrics), allowing the overall progress of an initiative or objective to be evaluated.
Entity
Performance / Goals
Use Cases
- Goal tracking
- Performance reviews
- Performance dashboards
- Goal achievement analysis
- OKR and objective tracking
- Progress reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Goal metric group identifier |
Relationships
-
goals_metric_groups.id→goals_metrics.metric_group_idPurpose: Retrieve all metrics associated with the same goal.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
title |
String | Goal or metric group name |
description |
String | Goal description |
progress |
Number | Overall goal progress |
needs_attention |
Boolean | Indicates whether the goal requires attention |
Features / Relevant Data
-
progress→ overall progress tracking -
needs_attention→ identify goals at risk -
title→ goal classification
Notes
- Each record represents a parent goal that can contain one or multiple individual metrics.
- This table serves as the parent entity for
goals_metrics, consolidating the progress of all associated metrics. - It is commonly used to build Performance dashboards and monitor objectives at the individual, team, or organizational level.
- The
needs_attentionfield helps identify goals that may require follow-up or corrective actions. - To retrieve the full objective details, this table is typically joined with
goals_metrics.
goals_metric_values
Contains the historical values recorded for each performance metric (goals_metrics). Each record represents an update to a metric at a specific point in time, allowing its progression to be analyzed over time.
Entity
Performance / Goals / Metric History
Use Cases
- Historical goal tracking
- Performance trend analysis
- Change auditing
- Progress analysis
- Performance dashboards
- Initial vs current vs target value comparison
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Record identifier |
metric_id |
Number (FK) | Related performance metric |
Relationships
-
goals_metric_values.metric_id→goals_metrics.idPurpose: Retrieve the metric associated with the recorded value. -
goals_metrics.metric_group_id→goals_metric_groups.id*(throughgoals_metrics)*Purpose: Analyze the evolution of metrics belonging to the same goal.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
quantitative_start_value |
Number | Initial metric value |
quantitative_target_value |
Number | Target value |
quantitative_current_value |
Number | Recorded value at that point in time |
qualitative_value |
String | Recorded qualitative value |
created_at |
Date | Update timestamp |
metric_id |
Number | Associated metric |
Features / Relevant Data
-
quantitative_current_value→ performance evolution -
quantitative_target_value→ target comparison -
created_at→ historical trend analysis -
qualitative_value→ qualitative metric tracking
Notes
- Each record represents a historical update to a performance metric.
- Unlike
goals_metrics, which stores the current state of a metric, this table preserves the history of value updates over time. - It is commonly used to analyze progress trends, generate historical reports, and audit performance changes.
- It should be used together with
goals_metricsto retrieve metric details and withgoals_metric_groupsto analyze the evolution of an entire goal.
goals_metrics
Contains information about Goal Metrics configured in Factorial. Each record represents an individual metric assigned to an employee, including its evaluation period, progress, target values, and current status.
This table is used to monitor performance for both quantitative and qualitative goals.
Entity
Performance / Goals / Metrics
Use Cases
- Goal tracking
- Performance reviews
- Progress dashboards
- Goal achievement analysis
- Expected vs actual progress analysis
- Performance reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Metric identifier |
assignee_id |
Number (FK) | Assigned employee |
metric_group_id |
Number (FK) | Goal metric group |
Relationships
-
goals_metrics.assignee_id→employees.idPurpose: Retrieve information about the employee responsible for the goal. -
goals_metrics.metric_group_id→ Goal Metric Groups *(when available)*Purpose: Group metrics belonging to the same goal or initiative.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
title |
String | Metric name |
starts_on |
Date | Start date |
ends_on |
Date | End date |
type |
String | Metric type (quantitative or qualitative) |
quantitative_start_value |
Number | Initial value |
quantitative_target_value |
Number | Target value |
quantitative_current_value |
Number | Current value |
qualitative_value |
String | Qualitative value |
progress |
Number | Current progress |
progress_status |
String | Progress status |
expected_progress |
Number | Expected progress |
assignee_id |
Number | Assigned employee |
metric_group_id |
Number | Metric group |
Features / Relevant Data
-
progress→ progress tracking -
expected_progress→ expected vs actual comparison -
progress_status→ completion status -
quantitative_target_value→ target measurement -
quantitative_current_value→ current performance -
type→ goal type classification
Notes
- Each record represents a single metric associated with a goal.
- The table supports both quantitative and qualitative metrics.
- Progress can be evaluated by comparing
progressagainstexpected_progress. - A single employee may have multiple active metrics at the same time.
- It is primarily used for performance reporting, goal tracking, and individual or team performance analysis.
-
metric_group_idallows multiple metrics to be grouped under the same goal or initiative when applicable.
hour-breakdowns
Contains the calculated results generated by the company's Time Tracking policies for each employee and working day. The table breaks down tracked time according to the rules configured by the company, classifying it into regular time, overtime, public holiday time, and any other special working hour rules defined in the attendance policies.
Each record represents a calculation rule applied to an employee on a specific date, meaning that a single employee may have multiple records for the same day.
Entity
Time Tracking / Attendance Policies / Hour Calculations
Use Cases
- Overtime reporting
- Special Working Hours (Majorations) reporting
- Regular vs overtime analysis
- Daily balance calculations
- Attendance policy validation
- Worked time analysis by calculation rule
Keys
| Field | Type | Usage |
|---|---|---|
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
hour_breakdowns.employee_id→employees.idPurpose: Retrieve employee information. -
hour_breakdowns.date→daily_time_configs.date+employee_id*(when applicable)*Purpose: Compare the hour breakdown against daily time calculations. -
hour_breakdowns.date→shifts.reference_date+employee_id*(when applicable)*Purpose: Link the calculated results to the original clock-in records.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
time_tracked |
Number | Tracked time |
regular_time_tracked |
Number | Tracked regular time |
extra_time_tracked |
Number | Tracked overtime |
effective_worked_time |
Number | Effective worked time |
effective_regular_time |
Number | Effective regular worked time |
effective_extra_time |
Number | Effective overtime |
estimated_hours |
Number | Estimated working hours |
scheduled_overtime |
Number | Scheduled overtime |
requested_overtime |
Number | Requested overtime |
time_range_type |
String | Applied rule or time range type |
time_range_name |
String | Name of the applied rule |
balance |
Number | Daily time balance |
default_time_in_range |
Number | Time classified as standard hours |
bank_holiday_time_in_range |
Number | Time worked on public holidays |
custom_time_in_range |
Number | Time classified under custom rules |
date |
Date | Calculation date |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
effective_extra_time→ overtime analysis -
effective_regular_time→ regular hours analysis -
scheduled_overtime→ planned vs actual overtime -
requested_overtime→ overtime request tracking -
balance→ daily balance monitoring -
time_range_type→ rule classification -
time_range_name→ attendance policy analysis -
bank_holiday_time_in_range→ public holiday work -
custom_time_in_range→ company-defined special rules
Notes
- Each record represents the result of a calculation rule applied to an employee on a specific date.
- A single employee may have multiple records for the same day, depending on the number of Time Tracking rules configured by the company.
- The calculated values are entirely driven by the customer's Time Tracking policy configuration, so results may vary significantly across companies.
- This is the primary data source for Overtime, Special Working Hours (Majorations), and other custom attendance rule reports.
- It is commonly used together with
employees,daily_time_configs, andshiftsto validate calculations and build advanced attendance reports.
leaves
Contains all information related to employee leave requests. It includes the leave type, request status, duration, start and end dates, as well as information about supporting documentation.
This is the primary table used to analyze vacations, sick leave, paid leave, and any other absence managed through the Time Off module.
Entity
Time Off / Leaves / Employees
Use Cases
- Leave reporting
- Vacation reporting
- Absenteeism analysis
- Leave day and hour calculations
- Approval tracking
- Leave auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique leave request identifier |
employee_id |
Number (FK) | Relation to the employee |
Relationships
-
leaves.employee_id→employees.idPurpose: Retrieve employee information. -
leaves.id→documents.leave_idPurpose: Retrieve supporting documents attached to the leave request. -
leaves.employee_id+start_on/finish_on→contracts.employee_idPurpose: Retrieve the applicable contract to correctly calculate working days and working hours during the leave period. -
leaves.employee_id+date→daily_time_configs.employee_idPurpose: Compare leave periods against planned hours, worked hours, and daily balances. -
leaves.employee_id+date→shifts.employee_idPurpose: Validate clock-ins during leave periods and identify attendance issues. -
leaves.employee_id+date→shift_management_shifts.employee_idPurpose: Retrieve assigned shifts during the leave period. -
leaves.employee_id+date→work_schedule_schedules.employee_idPurpose: Retrieve the employee's planned working schedule. -
leaves.employee_id+date→company_holidays.employee_id*(when applicable)*Purpose: Identify public holidays overlapping with the leave period.
Key Fields
| Field | Exposer Type | Description |
|---|---|---|
leave_type_name |
String | Leave type name |
leave_type_name_slug |
String | Internal leave type identifier |
status |
String | Leave request status |
duration |
Number | Total leave duration |
duration_type |
String | Duration unit (days, hours, half-day, etc.) |
document_justified |
Boolean | Indicates whether supporting documentation has been provided |
created_at |
Date | Leave request creation date |
start_on |
Date | Leave start date |
finish_on |
Date | Leave end date |
link |
String | Direct link to the leave request in Factorial |
description |
String | Leave description or reason |
employee_id |
Number | Associated employee |
Features / Relevant Data
-
leave_type_name→ leave type analysis -
status→ approval tracking -
duration→ duration analysis -
duration_type→ duration classification -
document_justified→ documentation compliance -
start_on/finish_on→ time-based analysis -
created_at→ request timeline analysis
Notes
- Each record represents one leave request.
- A leave request may span one or multiple days depending on
start_onandfinish_on. - The
durationfield only stores the total duration of the leave and does not provide a day-by-day or hour-by-hour breakdown. - To accurately calculate leave per working day or per working hour, this table should be combined with
contracts, using fields such asworking_week_daysand the applicable contract version to split and distribute the leave across the employee's contractual working days. - This table is commonly enriched using:
-
contracts→ contractual working days and working hours. -
daily_time_configs→ planned, worked, and balanced daily hours. -
shifts→ employee clock-in/out records. -
shift_management_shifts→ assigned shifts. -
work_schedule_schedules→ theoretical work schedules.
-
- These relationships enable the creation of advanced Time Tracking reports, including:
- Absenteeism reports.
- Vacation and leave reports.
- Attendance vs leave analysis.
- Missing clock-in reports.
- Late arrival reports.
- Planned vs actual working time.
- Employee attendance and Time Tracking dashboards.
- Supporting documents can be retrieved through the relationship with
documents. - This is one of the most frequently used tables for building Time Off reports.
leaves_cohort_by_day
Contains a daily snapshot of the leaves dataset. It allows historical analysis by preserving the state of leave records as they existed on a specific day.
Entity
Time Off / Leaves Snapshot
Notes
- Same structure and fields as
leaves. - Each record represents the state of a leave request on a specific day.
- Recommended for daily historical reporting and auditing.
leaves_cohort_by_month
Contains a monthly snapshot of the leaves dataset. It enables historical reporting by preserving the state of leave records at the end of each month.
Entity
Time Off / Leaves Snapshot
Notes:
- Same structure and fields as
leaves. - Each record represents the state of a leave request for a specific month.
- Recommended for monthly reporting, absenteeism trends, and historical analysis.
leaves_cohort_by_year
Contains a yearly snapshot of the leaves dataset. It allows long-term historical analysis without relying solely on the current state of leave records.
Entity
Time Off / Leaves Snapshot
Notes:
- Same structure and fields as leaves.
- Each record represents the state of a leave request for a specific year.
- Recommended for year-over-year comparisons, auditing, and long-term historical reporting.
locations
Contains the Workplaces (Locations) configured within Factorial. Each record represents a physical workplace where employees can be assigned, including address information, time zone, and geographic coordinates.
This table centralises information about the company's offices, branches, and work locations.
Entity
Organisation / Workplaces / Locations
Use cases
- Workplace reporting
- Employee geographic distribution
- Office and branch analysis
- Country, state, and city segmentation
- Workplace management
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Unique workplace identifier |
Relationships
-
locations.name→employees.office*(when applicable)*Purpose: Retrieve the workplace assigned to an employee. -
locations.country→employees.country*(when applicable)*Purpose: Geographic reporting and country-based segmentation. -
locations.timezone→ Time Tracking *(when applicable)*Purpose: Consider the workplace time zone in attendance and clock-in processes.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Workplace name |
country |
String | Country |
state |
String | State or province |
city |
String | City |
address |
String | Address |
full_address |
String | Full address |
postal_code |
String | Postal code |
phone_number |
String | Contact phone number |
main |
Boolean | Indicates whether this is the primary workplace |
latitude |
Number | Latitude |
longitude |
Number | Longitude |
timezone |
String | Time zone |
Features / Relevant data
-
country→ country analysis -
state→ regional segmentation -
city→ geographic distribution -
main→ primary workplace identification -
timezone→ time zone analysis -
latitude/longitude→ geolocation
Notes
- Each record represents a workplace configured in Factorial.
- Frequently used together with
employeesto segment reports by office, branch, or workplace. - Can be used to build geographic reports and analyze employee distribution across locations.
- The
timezonefield is particularly useful for Time Tracking implementations and organizations operating across multiple time zones. -
latitudeandlongitudeenable integration with mapping services and geospatial analysis tools.
observations
Contains employee observations or notes recorded within Factorial. Each record represents a comment associated with an employee on a specific date, providing a historical log of internal notes.
These observations can be used to document follow-ups, incidents, recognition, or any other relevant information related to an employee.
Entity
Employees / Observations
Use cases
- Employee follow-up
- Incident tracking
- Observation history
- Audit reporting
- Employee monitoring
- Internal performance reviews
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Observation identifier |
employee_id |
Number (FK) | Related employee |
Relationships
-
observations.employee_id→employees.idPurpose: Retrieve information about the associated employee.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
observation |
String | Observation content |
date |
Date | Observation date |
employee_id |
Number | Associated employee |
Features / Relevant data
-
observation→ note analysis -
date→ chronological tracking -
employee_id→ employee history
Notes
- Each record represents a single observation associated with an employee.
- An employee may have multiple observations recorded over time.
- The
observationfield contains free-text information, so its content depends entirely on how each organization uses the feature. - It can be used to document incidents, recognition, follow-up notes, or any other relevant employee-related information.
- This table is commonly used together with
employeesto build employee history and follow-up reports.
overtime_requests
Contains employee overtime requests. Each record represents an overtime request submitted for a specific date, including the requested hours, request status, and the justification provided by the employee.
This table stores overtime requests regardless of whether they are approved, rejected, or still pending.
Entity
Time Tracking / Overtime
Use cases
- Overtime request reporting
- Approval tracking
- Request auditing
- Requested overtime analysis
- Productivity reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Overtime request identifier |
employee_id |
Number (FK) | Related employee |
Relationships
-
overtime_requests.employee_id→employees.idPurpose: Retrieve employee information. -
overtime_requests.employee_id+date→shifts.employee_id*(when applicable)*Purpose: Validate the worked shift that generated the overtime request. -
overtime_requests.employee_id+date→daily_time_configs.employee_id*(when applicable)*Purpose: Compare requested overtime against tracked hours and daily balances. -
overtime_requests.employee_id+date→hour_breakdowns.employee_id*(when applicable)*Purpose: Compare requested overtime against the overtime calculated by the Time Tracking policies.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Request date |
status |
String | Request status |
description |
String | Employee description |
reason |
String | Reason for the request |
hours |
Number | Requested overtime hours |
employee_id |
Number | Associated employee |
Features / Relevant data
-
hours→ requested overtime analysis -
status→ approval tracking -
reason→ request categorisation -
date→ time trend analysis
Notes
- Each record represents one overtime request.
- This table stores requested overtime only and does not represent the overtime actually worked or calculated.
- It is commonly combined with
hour_breakdowns,daily_time_configs, andshiftsto compare requested overtime with tracked hours and overtime calculated by the company's Time Tracking policies. - Depending on the company's workflow, requests may have statuses such as pending, approved, or rejected.
- This table is particularly useful for auditing the overtime approval process and analyzing the difference between requested overtime and recognized overtime.
payroll_integrations
Contains the employee identifiers used by the different Payroll integration providers supported by Factorial. Each field stores the employee code assigned by a specific payroll provider, allowing employee records to be synchronised between Factorial and external payroll systems.
This table does not contain salary information or payroll calculations; it only stores the identifiers required by each integration.
Entity
Payroll / Integrations
Use cases
- Payroll integration auditing
- Synchronisation validation
- Employee matching between Factorial and external payroll systems
- Integration configuration reporting
- Synchronisation troubleshooting
Keys
| Field | Type | Usage |
|---|---|---|
employee_id |
Number (FK) | Related employee |
Relationships
-
payroll_integrations.employee_id→employees.idPurpose: Retrieve information about the employee associated with each payroll integration.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
a3innuva_employee_code |
String | Employee code in A3innuva |
a3nom_employee_code |
String | Employee code in A3Nom |
agenda_employee_code |
String | Employee code in Agenda |
datev_lauds_employee_code |
String | Employee code in DATEV LAUDS |
job_sistemi_employee_code |
String | Employee code in Job Sistemi |
sage100_employee_code |
String | Employee code in Sage 100 |
silae_employee_code |
String | Employee code in Silae |
zucchetti_employee_code |
String | Employee code in Zucchetti |
employee_id |
Number | Associated employee |
Features / Relevant data
- Stores the employee identifier used by different payroll providers.
- An employee will typically have a value only for the payroll system configured by the company.
- Facilitates data reconciliation between Factorial and external payroll platforms.
Notes
- This table is intended exclusively for Payroll integrations.
- It does not contain salary data, payroll items, payments, or financial information.
- Depending on the company's configured integrations, many of these fields may remain empty.
- It is primarily used to validate integration setups, troubleshoot synchronization issues, and map employees between Factorial and external payroll systems.
- It is commonly used together with
employeesto identify the corresponding employee.
performance_review_evaluation_answers
Contains the responses submitted during Performance Reviews. Each record represents the answer provided to a specific question within an evaluation, including the main answer and an optional comment.
This table stores the actual responses submitted by reviewers and reviewees, allowing a completed evaluation to be fully reconstructed.
Entity
Performance / Performance Reviews
Use cases
- Performance review result reporting
- Response auditing
- Performance analysis
- Evaluation tracking
- Result exports
- Performance dashboards
Keys
| Field | Type | Usage |
|---|---|---|
evaluation_id |
Number (FK) | Associated evaluation |
question_uuid |
UUID (FK) | Associated question |
Relationships
-
performance_review_evaluation_answers.evaluation_id→performance_review_evaluations.idPurpose: Retrieve the evaluation associated with the response. -
performance_review_evaluation_answers.question_uuid→performance_review_questions.uuidPurpose: Retrieve the corresponding question. -
performance_review_evaluations.review_process_id→performance_review_processes.id*(throughperformance_review_evaluations)*Purpose: Identify the Performance Review process associated with the response.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
question_uuid |
UUID | Answered question |
answer |
String | Submitted answer |
answer_comment |
String | Additional comment associated with the answer |
evaluation_id |
Number | Associated evaluation |
Features / Relevant data
-
answer→ submitted response -
answer_comment→ additional feedback -
question_uuid→ link to the original question -
evaluation_id→ link to the corresponding evaluation
Notes
- Each record represents the answer to a single question within a Performance Review evaluation.
- The content of
answerdepends on the question type defined inperformance_review_questions; it may contain free text, a rating, a selected option, or another supported response format. -
answer_commentstores optional comments when the review form allows additional feedback. - To reconstruct a complete evaluation, this table is commonly joined with
performance_review_questionsandperformance_review_evaluations. - It can also be related to
performance_review_processesto provide the context of the overall review cycle. - This is the primary table used to analyze Performance Review results and generate detailed reports based on employee responses.
performance_review_evaluation
Contains information about individual performance evaluations performed within Performance Review processes in Factorial. Each record represents a single evaluation between a reviewer and a reviewee, including the evaluation type, its current status, and the review process it belongs to.
This table allows you to analyse who evaluates whom, the status of each evaluation, and its relationship to a specific performance review process.
Entity
Performance / Performance Reviews
Use cases
- Performance review tracking
- Review process auditing
- Pending and completed evaluation reporting
- Reviewer and reviewee analysis
- Participation metrics
- Performance dashboards
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Evaluation identifier |
review_process_id |
Number (FK) | Associated review process |
reviewer_employee_id |
Number (FK) | Employee acting as reviewer |
target_employee_id |
Number (FK) | Employee being reviewed |
Relationships
-
performance_review_evaluations.reviewer_employee_id→employees.idPurpose: Retrieve reviewer information. -
performance_review_evaluations.target_employee_id→employees.idPurpose: Retrieve reviewee information. -
performance_review_evaluations.review_process_id→performance_review_processes.id*(when available)*Purpose: Retrieve information about the associated performance review process.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
evaluation_type |
String | Evaluation type (self review, manager review, peer review, etc.) |
status |
String | Evaluation status |
reviewer_full_name |
String | Reviewer's full name |
target_full_name |
String | Reviewee's full name |
review_process_id |
Number | Associated review process |
reviewer_employee_id |
Number | Reviewer identifier |
target_employee_id |
Number | Reviewee identifier |
Features / Relevant data
-
evaluation_type→ evaluation type classification -
status→ evaluation progress tracking -
reviewer_employee_id→ reviewer analysis -
target_employee_id→ reviewee analysis
Notes
- Each record represents a single evaluation within a Performance Review process.
- The same employee may participate as a reviewer, a reviewee, or both, depending on the review workflow.
-
evaluation_typedistinguishes different review models, such as self-reviews, manager reviews, and peer reviews. - This table is commonly joined with
employeesto retrieve additional information about both reviewers and reviewees. - It is also frequently related to
performance_review_processesto obtain details about the review cycle, including dates, configuration, and overall process status. - It is particularly useful for building Performance dashboards, measuring participation rates, and auditing performance review processes.
performance_review_final_employee_scores
Contains the final performance score assigned to each employee after completing a Performance Review process. Each record represents the consolidated result for an employee within a review cycle, including the final score, the scoring scale used, the normalized score, and the calculation timestamp.
This table stores the final outcome of the review process once all evaluations have been completed and processed.
Entity
Performance / Performance Reviews
Use cases
- Performance reporting
- Employee rankings
- Final score analysis
- Performance dashboards
- Performance review auditing
- Review cycle comparisons
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Final score identifier |
review_process_id |
Number (FK) | Associated review process |
target_employee_id |
Number (FK) | Reviewed employee |
Relationships
-
performance_review_final_employee_scores.target_employee_id→employees.idPurpose: Retrieve information about the reviewed employee. -
performance_review_final_employee_scores.review_process_id→performance_review_processes.idPurpose: Retrieve information about the associated Performance Review process. -
performance_review_final_employee_scores.target_employee_id+review_process_id→performance_review_evaluations.target_employee_id*(when applicable)*Purpose: Relate the final score to the individual evaluations that contributed to it.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
score |
Number | Final performance score |
scale_max |
Number | Maximum value of the scoring scale |
scale_min |
Number | Minimum value of the scoring scale |
normalized_score |
Number | Normalized performance score |
calculated_at |
Date | Date when the final score was calculated |
review_process_id |
Number | Associated review process |
target_employee_id |
Number | Reviewed employee |
Features / Relevant data
-
score→ employee's final performance result -
normalized_score→ comparison across different scoring scales -
calculated_at→ calculation audit trail -
scale_min/scale_max→ score interpretation
Notes
- Each record represents the final consolidated performance score for an employee within a Performance Review process.
- Unlike
performance_review_evaluations, which stores individual reviews, this table contains the final calculated score for the employee. -
normalized_scoreenables comparisons between review processes that use different scoring scales. - This table is commonly joined with
performance_review_processesto identify the review cycle and withemployeesto retrieve employee information. - It can also be combined with
performance_review_evaluationsandperformance_review_evaluation_answersto analyze how individual evaluations contributed to the final score. - It is particularly useful for generating employee rankings, Performance dashboards, historical comparisons, and overall performance analytics.
performance_review_processes
Contains information about Performance Review processes (review cycles) configured in Factorial. Each record represents a review cycle, including its name, description, execution period, current status, and whether it has been archived.
This table represents the top level of the Performance Review hierarchy and groups all individual evaluations performed within the same review cycle.
Entity
Performance / Performance Reviews
Use cases
- Performance review cycle management
- Performance process reporting
- Review campaign tracking
- Performance auditing
- Performance dashboards
- Participation analysis by review cycle
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Performance review process identifier |
Relationships
-
performance_review_processes.id→performance_review_evaluations.review_process_idPurpose: Retrieve all evaluations belonging to the same review process.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Review process name |
description |
String | Process description |
starts_at |
Date | Start date |
ends_at |
Date | End date |
archived |
Boolean | Indicates whether the process has been archived |
status |
String | Current process status |
Features / Relevant data
-
status→ process status tracking -
starts_at/ends_at→ review period analysis -
archived→ historical process identification -
name→ review campaign classification
Notes
- Each record represents an entire Performance Review cycle.
- A single process can contain multiple individual evaluations, which are stored in
performance_review_evaluations. - The
statusfield identifies the current stage of the review process, such as draft, active, completed, or other platform-defined statuses. - The
archivedfield distinguishes active review cycles from historical ones that have already been closed. - This table is commonly used together with
performance_review_evaluationsto retrieve all evaluations associated with a specific review cycle. - It is particularly useful for participation reporting, monitoring review campaign progress, and auditing historical Performance Review processes.
performance_review_questions
Contains the questions configured for Performance Review processes in Factorial. Each record represents a question that belongs to a review process, including its type, whether it is mandatory, the evaluation type it applies to, and the configuration of its possible answers.
This table defines the structure of the questionnaires used during Performance Reviews.
Entity
Performance / Performance Reviews
Use cases
- Review questionnaire auditing
- Performance review reporting
- Question type analysis
- Performance process documentation
- Evaluation configuration validation
Keys
| Field | Type | Usage |
|---|---|---|
uuid |
UUID (PK) | Unique question identifier |
review_process_id |
Number (FK) | Associated review process |
Relationships
-
performance_review_questions.review_process_id→performance_review_processes.idPurpose: Retrieve the Performance Review process associated with the question.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
question_label |
String | Question text |
mandatory |
Boolean | Indicates whether answering the question is required |
evaluation_type |
String | Evaluation type the question applies to (self review, manager review, peer review, etc.) |
question_type |
String | Question type (text, rating scale, multiple choice, etc.) |
max_choices |
Number | Maximum number of selectable choices |
scale |
String | Rating scale configuration |
choice_options |
String / JSON | Available options for selection questions |
review_process_id |
Number | Associated review process |
Features / Relevant data
-
question_type→ question classification -
mandatory→ required question identification -
evaluation_type→ evaluation type segmentation -
choice_options→ configured answer options -
scale→ rating scale configuration
Notes
- Each record represents a single question within a Performance Review process.
- A review process can contain multiple questions.
- The question behavior depends on its
question_type, supporting free-text answers, rating scales, multiple-choice questions, and other configurable formats. -
choice_optionstypically stores the available answer choices for selection-based questions and may be represented as structured text or JSON. -
evaluation_typeallows questions to be displayed only for specific review types, such as self-reviews, manager reviews, or peer reviews. - This table is commonly used together with
performance_review_processesto reconstruct the complete structure of a Performance Review questionnaire.
project_management__project_workers
Contains consolidated information about employees assigned to projects within the Project Management module. Each record represents an employee's participation in a project, including tracked time, labor costs, and recorded spending.
Unlike project_workers, this table includes financial metrics that allow organisations to analyse the actual cost of the resources assigned to each project.
Entity
Project Management / Project Workers
Use cases
- Project cost reporting
- Profitability analysis
- Resource allocation analysis
- Employee productivity reporting
- Labor cost analysis
- Financial dashboards
- Project allocation reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Record identifier |
employee_id |
Number (FK) | Assigned employee |
project_id |
Number (FK) | Associated project |
Relationships
-
project_management__project_workers.employee_id→employees.idPurpose: Retrieve employee information. -
project_management__project_workers.project_id→projects.idPurpose: Retrieve project information. -
project_management__project_workers.employee_id→shifts.employee_id*(report correlation)*Purpose: Correlate employee shifts to build productivity, utilization, and project time reports. -
project_management__project_workers.project_id→project_time_records*(throughproject_worker_idwhen applicable)*Purpose: Analyze the detailed project time allocations recorded by the employee.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
assigned |
Boolean | Indicates whether the employee is currently assigned to the project |
inputed_minutes |
Number | Total time allocated by the employee (minutes) |
labor_cost_cents |
Number | Employee labor cost allocated to the project |
company_labor_cost_cents |
Number | Total labor cost incurred by the company |
spending_cost_cents |
Number | Recorded employee spending associated with the project |
full_name |
String | Employee full name |
employee_id |
Number | Associated employee |
project_id |
Number | Associated project |
Features / Relevant data
-
inputed_minutes→ total allocated time -
labor_cost_cents→ allocated labor cost -
company_labor_cost_cents→ total company labor cost -
spending_cost_cents→ recorded project expenses -
assigned→ assignment status
Notes
- Each record represents an employee assigned to a project.
- In addition to assignment information, this table provides financial metrics for analyzing project resource costs.
- Fields ending in
_centsare stored in the smallest currency unit (for example, cents) and typically need to be divided by 100 to obtain the monetary amount. - This table is commonly joined with
projectsto retrieve project information and withemployeesto enrich employee details. - It can be combined with
project_time_recordsto analyze both summarized and detailed project time allocations. - It is one of the primary tables used to build project cost reports, profitability analyses, and financial project dashboards.
project_flexible_time_records
Contains the detailed flexible time allocations recorded by employees against projects and subprojects. Unlike project_time_records, these records are not linked to an attendance shift, representing manually entered or independently recorded project time.
This table allows employees to allocate time to projects even when no attendance record exists.
Entity
Projects / Flexible Time Tracking
Use cases
- Flexible project time reporting
- Subproject time reporting
- Employee productivity analysis
- Workload distribution
- Resource utilisation analysis
- Operational dashboards
- Manual time allocation auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Time allocation identifier |
project_worker_id |
Number (FK) | Assigned project worker |
subproject_id |
Number (FK) | Associated subproject (when applicable) |
Relationships
-
project_flexible_time_records.project_worker_id→project_workers.idPurpose: Retrieve the employee and project associated with the time allocation. -
project_flexible_time_records.subproject_id→subprojects.idPurpose: Retrieve the associated subproject. -
project_workers.project_id→projects.id*(throughproject_workers)*Purpose: Retrieve the parent project associated with the recorded time.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Allocation date |
imputed_minutes |
Number | Minutes allocated |
project_worker_id |
Number | Assigned project worker |
subproject_id |
Number | Associated subproject |
Features / Relevant data
-
imputed_minutes→ allocated project time -
date→ time-based analysis -
project_worker_id→ associated employee and project -
subproject_id→ subproject segmentation
Notes
- Each record represents a single flexible time allocation made against a project.
- Unlike
project_time_records, this table is not linked to attendance records (shifts), making these allocations independent from employee clock-ins. - It is commonly joined with
project_workersto identify the employee responsible for the allocation and the corresponding project. - When
subproject_idis available, allocations can be analyzed at the subproject level. - This table is particularly useful for organizations that allow manual project time entries or do not require all project work to originate from attendance tracking.
- It is commonly used to build productivity reports, workload analyses, resource utilization dashboards, and manual project time allocation reports.
project_management__projects
Contains consolidated information about projects managed within Factorial's Project Management module. Unlike the projects table, this dataset includes financial and operational indicators that allow organisations to analyse project performance, costs, and profitability.
In addition to general project information, it provides tracked time, labor costs, spending, fixed costs, and billing configuration.
Entity
Project Management / Projects
Use cases
- Project financial reporting
- Profitability analysis
- Cost control
- Project monitoring
- Executive dashboards
- Productivity reporting
- Billing analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Project identifier |
legal_entity_id |
Number (FK) | Associated legal entity |
client_id |
Number (FK) | Associated client |
Relationships
-
project_management__projects.id→project_management__project_workers.project_idPurpose: Retrieve employees assigned to the project. -
project_management__projects.id→projects.id*(when both datasets are available)*Purpose: Complement the project's operational information. -
project_management__projects.legal_entity_id→employees.legal_entity_idPurpose: Relate the project to its corresponding legal entity.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Project name |
code |
String | Project code |
description |
String | Project description |
start_date |
Date | Project start date |
due_date |
Date | Expected completion date |
status |
String | Current project status |
employees_assignment |
Number | Number of assigned employees |
inputed_minutes |
Number | Total tracked time allocated to the project |
is_billable |
Boolean | Indicates whether the project is billable |
fixed_cost_cents |
Number | Fixed project costs |
labor_cost_cents |
Number | Labor costs |
spending_cost_cents |
Number | Recorded expenses |
total_cost_cents |
Number | Total project cost |
billable_rate_type |
String | Billing rate configuration |
legal_entity_id |
Number | Legal entity |
client_id |
Number | Associated client |
Features / Relevant data
-
inputed_minutes→ total tracked time -
employees_assignment→ number of assigned employees -
is_billable→ identifies billable projects -
fixed_cost_cents→ fixed costs -
labor_cost_cents→ labor costs -
spending_cost_cents→ recorded expenses -
total_cost_cents→ consolidated project cost -
billable_rate_type→ billing configuration
Notes
- Each record represents a project within the Project Management module.
- Unlike the
projectstable, this dataset includes financial indicators and business metrics for analyzing project profitability and performance. - Fields ending in
_centsstore values in the smallest currency unit (for example, cents) and typically need to be divided by 100 to obtain the monetary amount. - This table is commonly joined with
project_management__project_workersto analyze employee allocation, tracked time, and labor costs. - When available, it can be combined with
projectsto enrich operational project information. - It is one of the primary datasets used for financial dashboards, profitability analysis, cost control, executive reporting, and project performance monitoring.
project_time_records
Contains the detailed time entries recorded against projects and subprojects. Each record represents a time allocation made by an employee on a specific date, typically linked to an attendance shift.
This is the most granular table within the Projects module for tracking project-related work, allowing users to identify exactly how many minutes were allocated, on which date, to which project, and, when applicable, to which subproject.
Entity
Projects / Time Tracking
Use cases
- Project time reporting
- Subproject time reporting
- Employee productivity analysis
- Resource utilisation reporting
- Workload distribution
- Operational dashboards
- Time allocation auditing
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Time entry identifier |
project_worker_id |
Number (FK) | Assigned project worker |
attendance_shift_id |
Number (FK) | Associated attendance shift |
subproject_id |
Number (FK) | Associated subproject (when applicable) |
Relationships
-
project_time_records.project_worker_id→project_workers.idPurpose: Retrieve the employee and project associated with the time entry. -
project_time_records.attendance_shift_id→shifts.id*(attendance shift)*Purpose: Retrieve the attendance shift that originated the time allocation. -
project_time_records.subproject_id→subprojects.idPurpose: Retrieve the associated subproject. -
project_workers.project_id→projects.id*(throughproject_workers)*Purpose: Retrieve the parent project for the recorded time.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Time entry date |
imputed_minutes |
Number | Minutes allocated |
project_worker_id |
Number | Assigned project worker |
attendance_shift_id |
Number | Associated attendance shift |
subproject_id |
Number | Associated subproject |
Features / Relevant data
-
imputed_minutes→ recorded working time -
date→ time-based analysis -
attendance_shift_id→ link to the original attendance record -
project_worker_id→ associated employee and project -
subproject_id→ subproject segmentation
Notes
- Each record represents a single time allocation made against a project.
- This is the most detailed table available for analyzing project time tracking.
- It is commonly joined with
project_workersto identify the employee responsible for the recorded time and the project to which it belongs. - It is also frequently combined with
shiftsthroughattendance_shift_idto retrieve additional attendance information such as clock-in/out times, worked hours, and other Time Tracking metrics. - When
subproject_idis populated, time allocations can be analyzed at the subproject level for more granular reporting. - This table is one of the primary sources for building productivity reports, workload analyses, resource utilization dashboards, and project time allocation reporting.
project_workers
Contains information about employees assigned to projects in Factorial. Each record represents the relationship between an employee and a project, indicating whether the assignment is active and the total amount of time logged by that employee for the project.
This table allows you to identify which employees participate in each project and analyse their level of allocation.
Entity
Projects / Employee Assignment
Use cases
- Project assignment reporting
- Employee allocation analysis
- Project participation tracking
- Workload distribution
- Productivity dashboards
- Resource utilisation analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Assignment identifier |
project_id |
Number (FK) | Associated project |
employee_id |
Number (FK) | Assigned employee |
Relationships
-
project_workers.project_id→projects.idPurpose: Retrieve project information. -
project_workers.employee_id→employees.idPurpose: Retrieve employee information. -
project_workers.employee_id→shifts.employee_id*(report correlation)*Purpose: Correlate employee shifts to build productivity, utilization, workload, and project time reports.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
assigned |
Boolean | Indicates whether the employee is currently assigned to the project |
inputed_minutes |
Number | Total time logged by the employee for the project (minutes) |
project_id |
Number | Associated project |
employee_id |
Number | Assigned employee |
Features / Relevant data
-
assigned→ assignment status -
inputed_minutes→ total employee allocation -
project_id→ associated project -
employee_id→ participating employee
Notes
- Each record represents the assignment of an employee to a project.
-
assignedindicates whether the assignment is currently active. -
inputed_minutesstores the total amount of time logged by the employee for the project. - This table is commonly used together with
projectsto identify the employees assigned to each project. - It is also frequently correlated with
shiftsthroughemployee_idto build productivity, workload allocation, resource utilization, and project time reports. - It is one of the primary tables used to analyze employee participation in projects and to build resource allocation dashboards.
projects
Contains information about the projects configured in Factorial. Each record represents a project that can be used to organise employee work, analyse time allocation, associate expenses, and monitor project activities, depending on the modules enabled by the company.
This table allows users to identify projects, monitor their status, define execution dates, and analyse the total amount of tracked time associated with each project.
Entity
Projects
Use cases
- Project reporting
- Project time analysis
- Project cost analysis
- Employee allocation
- Productivity dashboards
- Operational reporting
- Expense reporting by project
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Project identifier |
Relationships
-
projects.id→expenses_expensables.project_idPurpose: Retrieve expenses associated with the project. -
projects+shifts.employee_id*(report correlation)*Purpose: Correlate employee shifts with projects to build productivity, utilisation, workload, and project time reports. -
projects.id→subprojects.project_id*(when applicable)*Purpose: Retrieve the subprojects belonging to the project.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Project name |
status |
String | Current project status |
inputed_minutes |
Number | Total tracked time recorded for the project (minutes) |
code |
String | Project code |
start_date |
Date | Project start date |
due_date |
Date | Expected completion date |
Features / Relevant data
-
inputed_minutes→ total tracked time -
status→ project lifecycle monitoring -
code→ project identification -
start_date/due_date→ planning and execution analysis
Notes
- Each record represents a single project configured in Factorial.
-
inputed_minutesstores the total amount of tracked time recorded for the project. - This table is commonly used together with
shiftsby correlating records throughemployee_idto build productivity, workload allocation, resource utilisation, and project time reports. - It is also frequently combined with
expenses_expensablesto calculate project costs, reimbursements, and expense allocations. - Depending on the modules enabled by the company, Projects can be used alongside the Time Tracking and Expenses features.
- It is one of the primary tables used to build operational dashboards, productivity analyses, project utilisation reports, and project cost reporting.
session_access_memberships
Contains information about the employees associated with training sessions in Factorial's Training module. Each record represents an employee membership or access record for a specific training session, including participation status and the relationship between employees and training activities.
This table works as a bridge between sessions and employees, allowing organisations to analyse employee assignments, participation status, training access, and learning activity.
Training program information should be retrieved through the related sessions and trainings tables.
Entity
Training Session Participants
Use cases
- Employee training tracking
- Training participation reporting
- Training compliance analysis
- Employee learning dashboards
- Training assignment monitoring
- Learning & Development reporting
- Training completion analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Session access membership identifier |
session_id |
Number (FK) | Associated training session |
employee_id |
Number (FK) | Associated employee |
training_id |
Number (FK) | Associated training program |
Relationships
-
session_access_memberships.session_id→sessions.idPurpose: Retrieve the training session assigned to the employee, including schedule, modality, and session details. -
session_access_memberships.employee_id→employees.idPurpose: Retrieve employee information associated with the training participation. -
sessions.training_id→trainings.id*(through sessions)*Purpose: Retrieve the training program associated with the employee session participation.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
access_id |
Number | Training access identifier |
first_name |
String | Employee first name |
last_name |
String | Employee last name |
status |
String | Employee training access or participation status |
session_id |
Number | Associated training session |
employee_id |
Number | Associated employee |
training_id |
Number | Associated training program |
Features / Relevant data
-
employee_id→ connects training activity with employee information. -
session_id→ identifies the specific training session assigned to the employee. -
status→ tracks employee access or participation status. -
training_id→ allows grouping participation by training program when available. -
access_id→ identifies the employee training access record. -
session_id+employee_id→ enables employee-level training participation analysis.
Notes
- Each record represents one employee relationship with a training session.
- This table acts as the bridge between
sessionsandemployees. - Multiple employees can be associated with the same training session.
- One employee can have multiple training session memberships.
- Training program details should preferably be retrieved through
sessions.training_id→trainings.id. - Employee information should be enriched by joining
employee_idwith theemployeestable. -
statusshould be used to analyze employee participation, access state, or training progress depending on the configured workflow. - This dataset is commonly used together with
sessionsandtrainingsto build complete Learning & Development reports. - It is one of the primary tables for employee training assignment analysis, compliance dashboards, and participation tracking.
sessions
Contains information about the training sessions configured in Factorial's Training module. Each record represents an individual session belonging to a training program, including scheduling information, duration, modality, location, and subsidy information.
This table represents the execution and scheduling layer of a training program. General training information such as costs, provider details, classification, and status should be retrieved from the related trainings table.
Employee participation and access information should be retrieved through session_access_memberships.
Entity
Training Sessions
Use Cases
- Training calendar reporting
- Training planning analysis
- Learning & Development dashboards
- Training hours analysis
- Training modality reporting
- Training compliance monitoring
- Training activity tracking
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Training session identifier |
training_id |
Number (FK) | Associated training program identifier |
Relationships
-
sessions.training_id→trainings.idPurpose: Retrieve the training program associated with the session. Allows combining session scheduling information with training details such as costs, provider, type, and status. -
sessions.id→session_access_memberships.session_idPurpose: Retrieve employees assigned, enrolled, or granted access to a specific training session. -
session_access_memberships.employee_id→employees.idPurpose: Retrieve employee information associated with the training session participation.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Training session name |
starts_at |
Timestamp | Training session start date and time |
ends_at |
Timestamp | Training session end date and time |
due_date |
Date | Training completion deadline |
duration |
Number | Planned training duration |
modality |
String | Training delivery format |
link |
String | Training access link or external resource |
location |
String | Physical training location |
subsidized |
Boolean | Indicates whether the training session is subsidized |
training_id |
Number | Associated training program identifier |
Features / Relevant data
-
starts_at/ends_at→ training scheduling and calendar analysis. -
duration→ planned learning hours for the session. -
modality→ training format analysis (online, onsite, hybrid). -
subsidized→ identifies subsidized training sessions. -
location→ training venue analysis. -
training_id→ groups multiple sessions belonging to the same training program. -
session_access_memberships→ provides employee assignment and participation information.
Notes
- Each record represents a single training session configured in Factorial.
- A training program can contain multiple sessions with different dates, locations, and modalities.
- General training information such as costs, provider information, and training classification should be retrieved from
trainings. - Employee participation, access status, and assigned employees are not stored directly in this table and should be retrieved through
session_access_memberships. -
durationshould be validated according to the configured unit before calculating total training hours. - This table is commonly used together with
trainingsandsession_access_membershipsto build complete training lifecycle reports, including programs, schedules, and employee participation. - It is one of the primary datasets for training scheduling, execution tracking, and Learning & Development analytics.
shift_incidences
Contains information about incidents generated during attendance shifts in Factorial. Each record represents an incidence associated with an attendance shift, including the action performed, time differences, distance information, and the employee and shift affected.
This table allows organisations to analyse attendance exceptions, shift adjustments, modifications, and events related to employee attendance records. It is mainly used for attendance auditing and monitoring changes applied to shift records.
Entity
Attendance / Shift Incidences
Use cases
- Attendance incident reporting
- Shift modification tracking
- Attendance audit analysis
- Clock-in correction monitoring
- Employee attendance exception analysis
- Time difference analysis
- Attendance compliance reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Shift incidence identifier |
attendance_shift_id |
Number (FK) | Associated attendance shift |
employee_id |
Number (FK) | Associated employee |
Relationships
-
shift_incidences.attendance_shift_id→shifts.idPurpose: Retrieve the attendance shift affected by the incidence and analyse the related attendance record. -
shift_incidences.employee_id→employees.idPurpose: Retrieve employee information associated with the attendance incidence.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Shift incidence identifier |
shift_action |
String | Action or incidence type applied to the shift |
date |
Date | Incidence date |
action_time |
Timestamp | Date and time when the action occurred |
distance |
Number | Distance information related to the incidence |
time_difference |
Number | Time difference generated by the incidence |
attendance_shift_id |
Number | Associated attendance shift identifier |
employee_id |
Number | Associated employee identifier |
Features / Relevant data
-
shift_action→ identifies the type of attendance event or action performed. -
attendance_shift_id→ links the incidence with the original attendance shift. -
time_difference→ identifies changes or differences caused by the incidence. -
distance→ provides location-related distance information when applicable. -
action_time→ supports auditing of attendance changes. -
employee_id→ enables employee-level attendance incident analysis.
Notes
- Each record represents an attendance incidence linked to an employee shift.
- This table should be combined with
shiftsto obtain the complete attendance context. -
attendance_shift_idis the primary relationship used to identify the affected shift. - This dataset is intended for auditing and exception tracking, not official worked time calculations.
-
time_differencerepresents the difference generated by an attendance event and should not be used as official worked time. - Incidences may represent attendance corrections, modifications, validations, or other shift-related actions depending on company configuration.
- This table is commonly used to investigate attendance discrepancies, monitor corrections, and build attendance audit reports.
shift_management_rest_days
Contains information about employee rest days configured within Factorial's Shift Management module. Each record represents a scheduled rest day for an employee, including the date, status, and the method used to create the record.
This table allows organisations to identify the days on which an employee is not expected to work because they have a planned rest day.
Entity
Shift Management / Rest Days
Use cases
- Reporting on scheduled rest days managed through Shift Management
- Workforce planning analysis
- Staffing coverage
- Planned shift validation
- Employee availability reporting
- Shift scheduling dashboards
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Rest day identifier |
employee_id |
Number (FK) | Associated employee |
Relationships
-
shift_management_rest_days.employee_id→employees.idPurpose: Retrieve employee information. -
shift_management_rest_days.employee_id→shift_management_shifts.employee_id*(report correlation)*Purpose: Compare scheduled rest days with planned shifts. -
shift_management_rest_days.employee_id→shifts.employee_id*(report correlation)*Purpose: Identify attendance records created during scheduled rest days. -
shift_management_rest_days.employee_id→daily_time_configs.employee_id*(report correlation)*Purpose: Compare rest days with worked hours and daily balances.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Rest day date |
state |
String | Rest day status |
creation_mode |
String | Record creation method |
employee_id |
Number | Associated employee |
Features / Relevant data
-
date→ rest day date -
state→ record status -
creation_mode→ record creation source -
employee_id→ associated employee
Notes
- Each record represents a scheduled rest day for an employee.
- This table belongs to the Shift Management module and complements planned shift scheduling.
- It is commonly used together with
shift_management_shiftsto build a complete employee work and rest calendar. - It is also frequently correlated with
shiftsto identify attendance records created during scheduled rest days and detect unplanned work. - It can be combined with
daily_time_configsto compare scheduled rest days with actual worked hours and daily balances. - This table is commonly used to build workforce planning, availability, staffing coverage, and schedule compliance reports.
shift_management_shifts
Contains information about planned shifts created through Factorial's Shift Management module. Each record represents a shift assigned to an employee for a specific date, including scheduled times, duration, location, work area, and shift status.
Unlike the shifts table, which stores actual attendance records and worked time, this table represents the planned schedule before the shift is worked.
Entity
Shift Management / Planned Shifts
Use cases
- Shift scheduling reports
- Planned vs. actual worked time analysis
- Coverage reporting
- Schedule reporting
- Workforce planning
- Planned hours analysis
- Operational dashboards
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Shift identifier |
employee_id |
Number (FK) | Assigned employee |
location_id |
Number (FK) | Assigned location |
work_area_id |
Number (FK) | Assigned work area |
Relationships
-
shift_management_shifts.employee_id→employees.idPurpose: Retrieve employee information. -
shift_management_shifts.location_id→locations.idPurpose: Retrieve the assigned work location. -
shift_management_shifts.work_area_id→work_areas.id*(when available)*Purpose: Retrieve the assigned work area. -
shift_management_shifts.employee_id→shifts.employee_id*(report correlation)*Purpose: Compare planned shifts with actual employee attendance records. -
shift_management_shifts.employee_id→daily_time_configs.employee_id*(report correlation)*Purpose: Compare planned time against worked time, balances, and tracked hours. -
shift_management_shifts.employee_id→leaves.employee_id*(report correlation)*Purpose: Identify planned shifts affected by employee leave records.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date_of_shift |
Date | Shift date |
name |
String | Shift name |
start_at |
DateTime | Scheduled start time |
end_at |
DateTime | Scheduled end time |
shift_status |
String | Shift status |
creation_mode |
String | Shift creation method |
shift_duration |
Number | Planned shift duration |
duration_total_shifts_day |
Number | Total planned duration for the day |
extra_hours |
Number | Planned extra hours |
saved_shift_title |
String | Saved shift template |
timezone |
String | Shift timezone |
comments |
String | Shift comments |
employee_id |
Number | Assigned employee |
location_id |
Number | Assigned location |
work_area_id |
Number | Assigned work area |
Features / Relevant data
-
shift_status→ planning status -
creation_mode→ shift creation source -
shift_duration→ planned duration -
duration_total_shifts_day→ total planned daily hours -
extra_hours→ planned overtime -
location_id→ assigned location -
work_area_id→ assigned work area -
timezone→ applied timezone
Notes
- Each record represents a planned shift assigned to an employee.
- This table stores planned schedules, not actual attendance records.
- To analyze actual worked time, it is commonly combined with
shifts. - It is one of the primary tables used to compare scheduled hours versus worked hours, calculate punctuality, identify absences, detect schedule deviations, and analyze differences between planning and execution.
- It is also frequently combined with
daily_time_configsto build complete Time Tracking and daily balance reports. - It can be joined with
leavesto identify planned shifts impacted by vacations, sick leave, or other absences. - When used together with
locationsandwork_areas, it enables workforce coverage and operational scheduling reports. - This is one of the core tables for building scheduling, workforce planning, attendance compliance, and operational shift management reports.
shifts
Contains information about employee attendance records and clock-in/clock-out entries configured in Factorial. Each record represents an individual attendance shift, including clock-in time, clock-out time, recorded duration, estimated time, attendance status, location information, and registration source.
This table allows organisations to analyse employee attendance activity, punctuality, clock-in behavior, attendance sources, and operational shift information.
Important: This table should not be used as the primary source for time calculations, aggregations, or official worked time reporting. For official worked hours calculations, balances, planned time, or working time reports, use daily_time_configs.
Entity
Attendance / Shifts
Use cases
- Attendance reporting
- Clock-in and clock-out analysis
- Attendance auditing
- Punctuality analysis
- Attendance source tracking
- Operational shift reporting
- Attendance location analysis
- Project time allocation analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Attendance shift identifier |
employee_id |
Number (FK) | Associated employee |
workplace_id |
Number (FK) | Associated workplace |
Relationships
-
shifts.employee_id→employees.idPurpose: Retrieve employee information associated with the attendance record. -
shifts.workplace_id→workplaces.id*(when available)*Purpose: Retrieve workplace information associated with the attendance record. -
shifts.time_settings_break_configuration_id→time_settings_break_configurations.id*(when available)*Purpose: Retrieve the break configuration applied to the shift. -
shifts.id→project_time_records.attendance_shift_id*(when Project Tracking is enabled)*Purpose: Retrieve project time records associated with the attendance shift. This relationship allows analyzing employee time allocation by project when project hours are recorded through shifts.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
date |
Date | Attendance record date |
reference_date |
Date | Reference date used for attendance management |
clock_in |
Timestamp | Employee clock-in date and time |
clock_out |
Timestamp | Employee clock-out date and time |
duration |
Number | Attendance record duration |
worked |
Number | Worked time recorded in the shift |
estimated |
Number | Estimated time associated with the shift |
balance |
Number | Difference between worked and estimated time |
attendance_shift_state |
String | Current attendance record state |
attendance_shift_type |
String | Attendance record type |
attendance_shift_location_type |
String | Attendance location type |
attendance_shift_clock_in_source |
String | Source used for clock-in registration |
attendance_shift_clock_out_source |
String | Source used for clock-out registration |
observations |
String | Shift observations |
created_at |
Timestamp | Record creation date |
in_location_latitude |
Number | Clock-in latitude |
in_location_longitude |
Number | Clock-in longitude |
in_location_accuracy |
Number | Clock-in location accuracy |
out_location_latitude |
Number | Clock-out latitude |
out_location_longitude |
Number | Clock-out longitude |
out_location_accuracy |
Number | Clock-out location accuracy |
custom_field |
String | Custom field associated with the shift |
Features / Relevant data
-
clock_in/clock_out→ employee attendance timestamps. -
worked→ recorded worked time from the attendance entry. -
estimated→ planned or expected time associated with the shift. -
balance→ difference between worked and estimated time. -
attendance_shift_clock_in_source/attendance_shift_clock_out_source→ identify the platform or device used for attendance registration. -
attendance_shift_state→ attendance record status monitoring. -
attendance_shift_type→ attendance classification. -
in_location_*/out_location_*→ geographic information captured during attendance registration. -
workplace_id→ enables attendance analysis by workplace. -
project_time_records→ enables project-based time analysis when project tracking is recorded through attendance shifts.
Notes
- Each record represents an individual employee attendance shift.
- This table does not include clock-ins performed on days where no estimated working time exists.
- This table should not be used to perform official time calculations, totals, or aggregations.
- For worked hours calculations, planned time, overtime, balances, or official working time reports, use
daily_time_configs. -
worked,estimated, andbalancerepresent shift-level values and may not match officially calculated working time. - An employee may have multiple records on the same day due to split shifts, breaks, or attendance configurations.
- Location fields are only available when attendance tracking captures geographic information.
- When Project Tracking is enabled,
shiftscan be combined withproject_time_recordsthroughattendance_shift_idto analyze how employee attendance time is distributed across projects. - This table is mainly used for attendance auditing, clock-in analysis, attendance source tracking, and operational reports.
- For payroll, compliance, and official working time calculations,
daily_time_configsshould be considered the source of truth.
signatures
Contains information related to electronic document signatures within Factorial. Each record represents a signature request or completed signature for a document, indicating whether it has been signed, who signed it, and the associated document.
This table allows users to track electronic signature status and relate signatures to both documents and employees.
Entity
Documents / Electronic Signatures
Use cases
- Signed document reporting
- Pending signature tracking
- Electronic signature auditing
- Document compliance reporting
- Documentation dashboards
- Onboarding and HR documentation reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Signature identifier |
document_id |
Number (FK) | Associated document |
employee_id |
Number (FK) | Associated employee |
Relationships
-
signatures.document_id→documents.idPurpose: Retrieve information about the signed document. -
signatures.employee_id→employees.idPurpose: Retrieve information about the associated employee.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
signed |
Boolean | Indicates whether the document has been signed |
signer |
String | Person who signed the document |
document_id |
Number | Associated document |
employee_id |
Number | Associated employee |
Features / Relevant data
-
signed→ signature status -
signer→ document signer -
document_id→ related document -
employee_id→ related employee
Notes
- Each record represents an electronic signature associated with a document.
- This table is commonly used together with
documentsto retrieve additional document information such as filename, document type, approval status, and signature status. - It allows organizations to identify which documents have been signed and which are still pending.
subprojects
Contains information about the subprojects configured within a project in Factorial. Each record represents a subdivision of a parent project, allowing work to be organised in greater detail and enabling independent tracking of the time allocated to specific activities or project phases.
Subprojects provide a more granular level of reporting for productivity, costs, and resource utilisation.
Entity
Projects / Subprojects
Use cases
- Subproject reporting
- Productivity analysis by phase
- Time tracking by activity
- Cost analysis
- Operational dashboards
- Workload distribution
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Subproject identifier |
project_id |
Number (FK) | Parent project |
Relationships
-
subprojects.project_id→projects.idPurpose: Retrieve information about the parent project. -
subprojects+shifts.employee_id*(report correlation)*Purpose: Correlate employee shifts with subprojects to build productivity and time allocation reports. -
subprojects.id→expenses_expensables.subproject_idPurpose: Retrieve expenses associated with the subproject.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Subproject name |
inputed_minutes |
Number | Total tracked time recorded for the subproject (minutes) |
project_id |
Number | Associated parent project |
Features / Relevant data
-
inputed_minutes→ total tracked time -
project_id→ relationship with the parent project -
name→ subproject identification
Notes
- Each record represents a subproject belonging to a parent project.
-
inputed_minutesstores the total amount of tracked time recorded for the subproject. - Subprojects allow projects to be divided into phases, activities, or workstreams for more detailed reporting.
- This table is commonly used together with
projectsto provide the full project hierarchy. - It is also frequently used with
shiftsby correlating records throughemployee_idto build productivity, workload allocation, resource utilisation, and subproject time reports. - It can be combined with
expenses_expensablesto analyse expenses registered at the subproject level. - It is commonly used to build operational dashboards, productivity analyses, and project cost allocation reports.
supplements
Contains information about variable payroll supplements assigned to employees. Unlike additional_compensations, this table stores dynamic payments such as bonuses, commissions, incentives, awards, and other variable compensation items that may change from one payroll period to another.
Each record represents a variable supplement applied to an employee for a specific payroll period.
Entity
Payroll / Variable Supplements
Use cases
- Bonus and incentive reporting
- Commission reporting
- Variable compensation analysis
- Payroll component reporting
- Variable payment auditing
- Compensation dashboards
- Complete payroll reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Supplement identifier |
employee_id |
Number (FK) | Associated employee |
payroll_policy_period_id |
Number (FK) | Associated payroll period |
Relationships
-
supplements.employee_id→employees.idPurpose: Retrieve employee information. -
supplements.payroll_policy_period_id→payroll__result_concept_item_summaries.policy_period_idPurpose: Relate variable supplements to the payroll calculation results for the same payroll period. -
supplements.employee_id→additional_compensations.employee_id*(employee correlation)*Purpose: Combine fixed and variable compensation to calculate an employee's total remuneration. -
supplements.employee_id→contracts.employee_id*(correlated using the contract effective period)*Purpose: Retrieve contract information such as salary, working schedule, legal entity, and employment conditions applicable during the payroll period.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Supplement name |
unit |
String | Unit used for calculation |
amount |
Number | Supplement amount |
effective_on |
Date | Effective date |
employee_observations |
String | Employee observations |
supplement_observations |
String | Supplement observations |
period_starts_on |
Date | Payroll period start |
period_ends_on |
Date | Payroll period end |
policy_name |
String | Applied payroll policy |
employee_id |
Number | Associated employee |
Features / Relevant data
-
amount→ variable payment amount -
unit→ calculation unit -
effective_on→ effective date -
policy_name→ payroll policy -
period_starts_on/period_ends_on→ payroll period -
employee_observationsandsupplement_observations→ related comments
Notes
- Each record represents a variable payroll component assigned to an employee.
- This table is commonly used to store bonuses, commissions, incentives, awards, and other non-recurring payroll payments.
- Unlike
additional_compensations, records insupplementsare typically dynamic and may vary from one payroll period to another rather than representing permanent compensation. - It is commonly combined with
payroll__result_concept_item_summariesto reconcile variable supplements with payroll calculation results for a given payroll period. - It can also be joined with
additional_compensationsto build a complete view of fixed and variable employee compensation. - When combined with
contracts, the relationship should consider the contract effective period, not only theemployee_id, to ensure the supplement is associated with the correct active contract. - Together with
employees,contracts,additional_compensations, and payroll result tables, this dataset enables the creation of comprehensive payroll reports, compensation analysis, payroll audits, and total remuneration dashboards.
surveys
Contains information about surveys created within Factorial's Engagement module. Each record represents a survey, including its name, current status, anonymity settings, availability period, and scheduling configuration.
This table stores only the survey metadata and does not contain employee responses or survey results.
Entity
Engagement / Surveys
Use cases
- Survey reporting
- Employee engagement campaign tracking
- Active, scheduled, and completed survey reporting
- Participation dashboards
- Feedback campaign auditing
- Engagement analytics
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Survey identifier |
Relationships
-
surveys.id→ survey response tables *(when available)*Purpose: Retrieve employee responses, participation, and survey results. -
surveys→employees*(when a relationship is available)*Purpose: Segment survey results by employee, team, manager, office, legal entity, or any other organizational attribute.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
name |
String | Survey name |
status |
String | Current survey status |
anonymous |
Boolean | Indicates whether the survey is anonymous |
start_on |
Date | Survey start date |
end_on |
Date | Survey end date |
schedule |
String | Survey scheduling configuration |
created_at |
DateTime | Survey creation date |
Features / Relevant data
-
status→ survey status -
anonymous→ anonymity setting -
start_on/end_on→ survey availability period -
schedule→ survey scheduling configuration -
created_at→ survey creation timestamp
Notes
- Each record represents a survey created within the Engagement module.
- This table stores only the survey configuration and metadata; it does not contain employee responses or survey results.
- The
anonymousfield indicates whether the survey was configured as anonymous. - It is commonly used to build reports showing active, scheduled, completed, or archived surveys.
- When survey response datasets are available, this table can be joined to calculate participation rates, completion rates, and engagement metrics.
- It is particularly useful for building dashboards that monitor employee surveys, engagement initiatives, and internal feedback campaigns.
surveys_questions_configs
Contains the configuration of the questions included in surveys within Factorial's Engagement module. Each record represents a survey question, including its label, question type, and the survey to which it belongs.
This table defines the survey structure and is commonly used together with survey answer tables to identify the questions associated with each response.
Entity
Engagement / Survey Questions
Use cases
- Survey structure reporting
- Employee feedback analysis
- Survey configuration auditing
- Engagement reporting
- Question catalog reporting
- Survey analytics
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Survey question identifier |
survey_id |
Number (FK) | Associated survey |
Relationships
-
surveys_question_configs.survey_id→surveys.idPurpose: Retrieve the survey that contains the question. -
surveys_question_configs.id→surveys_question_group_answers.surveys_question_config_idPurpose: Retrieve employee responses associated with each survey question. -
surveys_question_configs.id→surveys_question_groups.id*(when available)*Purpose: Associate questions with their corresponding question groups.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
label |
String | Survey question text or label |
type |
String | Question type (e.g., rating, text, multiple choice) |
survey_id |
Number | Associated survey |
Features / Relevant data
-
label→ survey question -
type→ question type -
survey_id→ associated survey
Notes
- Each record represents a question configured within a survey.
- This table defines the survey structure but does not contain employee responses.
- It is commonly joined with
surveysto retrieve survey information and withsurveys_question_group_answersto analyze employee responses by question. - The
typefield determines how responses should be interpreted, such as free text, rating scales, or selectable options. - This table is commonly used to build engagement reports, satisfaction analyses, response breakdowns, and dashboards organized by survey question.
survey_question_group_answers
Contains the answers submitted by employees to survey question groups within Factorial's Engagement module. Each record represents an individual response provided by an employee for a specific survey question or question group.
This table stores the survey response values and links them to the corresponding survey, question configuration, question group, and employee.
Entity
Engagement / Survey Answers
Use cases
- Survey response reporting
- Employee engagement analysis
- Survey participation tracking
- Feedback analysis
- Response distribution reporting
- Engagement dashboards
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Survey answer identifier |
survey_id |
Number (FK) | Associated survey |
employee_id |
Number (FK) | Employee who submitted the response |
surveys_question_config_id |
Number (FK) | Associated survey question |
surveys_question_group_id |
Number (FK) | Associated question group |
Relationships
-
surveys_question_group_answers.survey_id→surveys.idPurpose: Retrieve the survey associated with the response. -
surveys_question_group_answers.employee_id→employees.idPurpose: Retrieve information about the employee who submitted the response. -
surveys_question_group_answers.surveys_question_config_id→surveys_question_configs.id*(when available)*Purpose: Retrieve the survey question configuration. -
surveys_question_group_answers.surveys_question_group_id→surveys_question_groups.id*(when available)*Purpose: Retrieve the question group to which the response belongs.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
value |
String / Number | Response value submitted by the employee |
survey_id |
Number | Associated survey |
employee_id |
Number | Employee who submitted the response |
surveys_question_config_id |
Number | Associated survey question |
surveys_question_group_id |
Number | Associated question group |
Features / Relevant data
-
value→ employee response value -
survey_id→ survey associated with the response -
employee_id→ respondent -
surveys_question_config_id→ survey question -
surveys_question_group_id→ question group
Notes
- Each record represents an individual answer submitted by an employee for a survey question.
- This table contains the actual survey responses and complements the
surveystable, which stores only survey metadata. - It can be joined with
surveysto identify the survey, withemployeesto segment responses by organizational attributes, and with the question configuration tables to retrieve question definitions and groupings. - Depending on the survey configuration, the
valuefield may contain different data types, such as text, numeric ratings, or selected options. - This table is commonly used to build engagement reports, participation metrics, response analysis, satisfaction dashboards, and employee feedback analytics.
survey_question_group
Contains the question groups defined for surveys within Factorial's Engagement module. Each record represents a survey questionnaire associated with a respondent and contains the survey questions as dynamically generated custom_field_* columns.
Unlike surveys_question_configs, which stores the definition of each question individually, this table presents the survey questions in a denormalized format, where every dynamically generated custom_field_* column corresponds to one question configured by the customer.
Entity
Engagement / Survey Question Groups
Use cases
- Survey structure reporting
- Survey configuration analysis
- Question catalog exports
- Survey template reporting
- Engagement analytics
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Question group identifier |
survey_id |
Number (FK) | Associated survey |
employee_id |
Number (FK) | Associated employee |
respondent_id |
Number (FK) | Associated respondent |
Relationships
-
surveys_question_groups.survey_id→surveys.idPurpose: Retrieve the survey associated with the question group. -
surveys_question_groups.employee_id→employees.idPurpose: Retrieve the employee associated with the survey. -
surveys_question_groups.respondent_id→employees.idPurpose: Retrieve the respondent associated with the survey. -
surveys_question_groups.survey_id→surveys_question_configs.survey_idPurpose: Retrieve the question definitions configured for the survey.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
respondent_id |
Number | Respondent identifier |
respondent_first_name |
String | Respondent's first name |
respondent_last_name |
String | Respondent's last name |
custom_field_* |
Dynamic | Dynamically generated survey questions |
survey_id |
Number | Associated survey |
employee_id |
Number | Associated employee |
Features / Relevant data
-
respondent_id→ respondent identifier -
respondent_first_name/respondent_last_name→ respondent information -
custom_field_*→ dynamically generated survey questions -
survey_id→ associated survey -
employee_id→ associated employee
Notes
- Each record represents a survey questionnaire associated with a respondent.
- The
custom_field_*columns are generated dynamically according to the number of questions configured by the customer. - These dynamic columns do not expose meaningful field names, making them difficult to interpret without referencing the survey configuration.
- This table is commonly used together with
surveys_question_configs, which provides the definition and metadata of each survey question. - It is useful for exporting complete survey structures and building dynamic survey reports.
tasks
Contains information about tasks created within Factorial. Each record represents a task assigned to an employee or user, including its title, description, assignee, author, due date, completion details, and timestamps.
This table is commonly used to track onboarding activities, HR processes, administrative tasks, and other employee-related workflows.
Entity
Tasks / Task Management
Use cases
- Task reporting
- Onboarding checklist tracking
- HR workflow monitoring
- Pending and completed task reporting
- Employee task dashboards
- Process compliance reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Task identifier |
assignee_id |
Number (FK) | Assigned employee |
Relationships
-
tasks.assignee_id→employees.idPurpose: Retrieve information about the employee assigned to the task. -
taskscan be combined with onboarding, documents, and employee datasets *(when available)*Purpose: Build complete onboarding workflows, compliance reports, and HR process tracking.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
task_name |
String | Task title |
task_content |
String | Task description or content |
assignee |
String | Assigned user name |
author |
String | Task creator |
imported_for |
Number | Employee associated with the imported task |
due_on |
Date | Task due date |
completed_by |
String | User who completed the task |
completed_at |
DateTime | Completion date and time |
created_at |
DateTime | Creation date |
updated_at |
DateTime | Last update date |
assignee_id |
Number | Assigned employee |
Features / Relevant data
-
task_name→ task title -
task_content→ task details -
assignee→ assigned user -
author→ task creator -
due_on→ due date -
completed_by→ completed by -
completed_at→ completion timestamp -
created_at/updated_at→ audit timestamps
Notes
- Each record represents a task assigned to an employee or user.
- Tasks may be part of onboarding processes, HR workflows, administrative procedures, or manually created action items.
- The table includes both assignment information and completion tracking, making it useful for monitoring task progress and compliance.
- It is commonly joined with
employeesto identify assignees and segment tasks by organizational attributes such as team, manager, office, or legal entity. - This table is frequently used to build dashboards showing pending, overdue, completed, and upcoming tasks, as well as onboarding and HR process tracking.
teams
Data related with team names
time_configs
Contains monthly aggregated Time Tracking balances for employees. Each record summarizes an employee's estimated working hours, worked hours, accumulated balance, previous balance, and projected balance for a specific monthly period.
Unlike daily_time_configs, which provides one record per employee per day, this table returns one summary record per employee and month, making it suitable for monthly balance reporting rather than daily time tracking analysis.
Current limitation:
Based on the current implementation, this dataset appears to expose only the previous month's summary. Historical monthly records beyond that period are currently not available through this exposer.
Entity
Time Tracking / Monthly time balances
Use cases
- Monthly employee time balance reporting
- Overtime and deficit hour analysis
- Monthly Time Tracking dashboards
- Worked vs. estimated hours reporting
- Time balance auditing
- Workforce productivity reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Time configuration identifier |
employee_id |
Number (FK) | Associated employee |
Relationships
-
time_configs.employee_id→employees.idPurpose: Retrieve employee information. -
time_configs.employee_id→daily_time_configs.employee_id*(report correlation)*Purpose: Drill down from monthly balances into daily Time Tracking records. -
time_configs.employee_id→shifts.employee_id*(report correlation)*Purpose: Compare monthly balances with attendance records and worked shifts. -
time_configs.employee_id→hour_breakdowns.employee_id*(report correlation)*Purpose: Analyze how regular hours, overtime, and special schedules contribute to the employee's monthly balance. -
time_configs.employee_id→contracts.employee_id*(correlated using the contract effective period)*Purpose: Retrieve contractual working hours and compare them with the employee's monthly worked hours and accumulated balance.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
total_estimated_hours |
Number | Total estimated working hours for the month |
total_worked_hours |
Number | Total worked hours for the month |
balance |
Number | Monthly accumulated balance |
previous_balance |
Number | Balance carried over from the previous month |
projected_balance |
Number | Projected balance after the current period |
start |
Date | Beginning of the reporting period |
end |
Date | End of the reporting period |
employee_id |
Number | Associated employee |
Features / Relevant data
-
total_estimated_hours→ planned working hours for the month -
total_worked_hours→ accumulated worked hours for the month -
balance→ monthly balance -
previous_balance→ balance carried over from the previous month -
projected_balance→ projected balance -
start/end→ reporting period -
employee_id→ associated employee
Notes
- Each record represents a monthly Time Tracking summary for an employee.
- The
startandendfields define the reporting period, which typically corresponds to the first and last day of a month. - Unlike
daily_time_configs, this table stores aggregated monthly values rather than daily records. - Based on the current implementation, this exposer only appears to return the previous month's summary, making it unsuitable for long-term historical reporting.
- For historical or day-by-day Time Tracking analysis,
daily_time_configsshould be used instead. - This table is commonly combined with
daily_time_configs,shifts,hour_breakdowns, andcontractsto build comprehensive monthly Time Tracking, overtime, and balance reports. - When joining with
contracts, the relationship should consider the contract's effective period to ensure the correct contractual conditions are applied for the reporting month.
time_period
time_settings_break_configurations
Contains information about the break configurations used in Factorial Time Tracking. Each record represents a break or rest configuration applied to attendance records, including its name, whether the break is paid, and whether the configuration is currently active.
This table allows organisations to identify the break rules applied to attendance records and analyze how breaks are configured within working time management.
Entity
Time Tracking / Break configurations
Use cases
- Break configuration reporting
- Attendance configuration analysis
- Paid break analysis
- Time tracking setup auditing
- Shift configuration reporting
- Working time rule analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Break configuration identifier |
Relationships
-
time_settings_break_configurations.id→shifts.time_settings_break_configuration_idPurpose: Retrieve the break configuration applied to an attendance shift.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Break configuration identifier |
name |
String | Break configuration name |
paid |
Boolean | Indicates whether the break is paid |
archived |
Boolean | Indicates whether the configuration is archived |
Features / Relevant data
-
name→ identifies the break rule or configuration applied to attendance records. -
paid→ determines whether break periods are considered paid time. -
archived→ identifies inactive or historical configurations. -
id→ enables linking configurations with attendance shifts.
Notes
- Each record represents a break configuration defined in Factorial Time Tracking.
- This table contains configuration data and does not store employee break occurrences.
- To analyze breaks applied to attendance records, join with
shiftsusingtime_settings_break_configuration_id. -
paidis relevant when analyzing working time calculations and break policies. - Archived configurations may continue to be referenced by historical attendance records.
- This table should not be used to calculate worked hours, break durations, or employee time balances.
- Official working time calculations should be performed using
daily_time_configs. - This dataset is mainly used for understanding time tracking setup, break rules, and attendance configuration.
time_tracking_policy
Contains information about the time-tracking policy currently assigned to each employee in Factorial. The policy is exposed as a reporting field alongside employee information, allowing organisations to identify which policy applies to each employee when analysing time-tracking data.
This field enables organisations to use the employee's current time-tracking policy as a reporting dimension and ensures that overtime calculations and other time-based analyses can take the applicable employee schedule into account.
Entity
Employee / Time Tracking Policy
Use cases
- Overtime calculation
- Time-tracking reporting
- Policy-based reporting
- Attendance and schedule analysis
- Employee policy compliance
- Identifying employees assigned to the wrong policy
- Grouping and filtering time-tracking data by policy
- AI-powered reporting
Keys
| Field | Type | Usage |
|---|---|---|
employee_id |
Number (FK) | Associated employee |
time_tracking_policy |
String | Current time-tracking policy assigned to the employee |
Relationships
-
time_tracking_policy.employee_id→employees.id
Purpose: Retrieve employee information associated with the time-tracking policy. -
time_tracking_policy→ time-tracking records (report correlation)
Purpose: Identify the policy applicable to an employee when analysing time-tracking and overtime data.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
employee_id |
Number | Associated employee identifier |
time_tracking_policy |
String | Current time-tracking policy assigned to the employee |
Features / Relevant data
-
time_tracking_policy→ identifies the employee's current time-tracking policy. - The policy is available in Analytics reports under Employees > Basic information.
- The field can be selected from the field list in the report builder.
- The field can also be queried directly in SQL.
-
time_tracking_policycan be used to select, filter or group time-tracking data by employee policy. - The policy is provided alongside the employee's hours, allowing overtime calculations to determine which schedule or policy applies to each employee.
- The field can be used to identify cases where an employee may have been assigned the wrong policy.
- The field is also available in AI Reports.
Notes
-
time_tracking_policyrepresents the employee's current time-tracking policy. - The field does not provide the employee's historical policy assignments.
- The policy is available as a reporting dimension alongside employee information and time-tracking data.
- The field can be used to support overtime calculations by identifying the policy applicable to each employee.
- The field can be used to identify potential policy assignment issues.
- For policy history or historical policy changes, this field should not be interpreted as a historical record.
- The field is available in Analytics reports and AI Reports.
tolerance_incidences
Contains information about tolerance incidences generated from customer-configured punctuality rules in Factorial. Each record represents an incidence related to an employee clock-in, comparing the scheduled start time with the actual clock-in time and applying the configured tolerance rules.
This table allows organisations to analyse late arrivals, early clock-ins, punctuality compliance, and the impact of attendance tolerance configurations.
Entity
Attendance / Tolerance Incidences
Use cases
- Punctuality reporting
- Attendance compliance analysis
- Late arrival tracking
- Early clock-in analysis
- Employee punctuality dashboards
- Attendance rule monitoring
- Tolerance rule impact analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Tolerance incidence identifier |
employee_id |
Number (FK) | Associated employee |
Relationships
-
tolerance_incidences.employee_id→employees.idPurpose: Retrieve employee information associated with the tolerance incidence. -
tolerance_incidences.date→shifts.date*(report correlation)*Purpose: Correlate tolerance incidences with attendance records for punctuality and clock-in analysis. -
tolerance_incidences.real_clock_in_time→shifts.clock_in*(report correlation)*Purpose: Compare actual clock-in records with tolerance results generated from attendance rules.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Tolerance incidence identifier |
date |
Date | Date when the tolerance incidence occurred |
clock_action |
String | Clock action evaluated by the tolerance rule |
scheduled_clock_in_time |
Timestamp | Scheduled clock-in time based on employee schedule |
real_clock_in_time |
Timestamp | Actual employee clock-in time |
minutes_off |
Number | Difference in minutes between scheduled and actual clock-in |
punctuality |
String | Punctuality result after applying tolerance rules |
start_date |
Date | Start date of the tolerance rule period |
end_date |
Date | End date of the tolerance rule period |
employee_id |
Number | Associated employee identifier |
Features / Relevant data
-
scheduled_clock_in_time→ expected employee start time according to the configured schedule. -
real_clock_in_time→ actual clock-in time recorded by the employee. -
minutes_off→ deviation between scheduled and actual clock-in time. -
punctuality→ result of the tolerance evaluation. -
clock_action→ identifies the attendance action evaluated. -
start_date/end_date→ define the validity period of the applied tolerance configuration. -
employee_id→ enables employee-level punctuality analysis.
Notes
- Each record represents a tolerance incidence generated from customer-configured attendance tolerance rules.
- The information available depends on the tolerance rules configured by each customer.
- This table is intended for punctuality and attendance rule analysis, not for official worked time calculations.
-
minutes_offrepresents the deviation between scheduled and actual clock-in based on tolerance logic. - The interpretation of delays or early arrivals depends on the configured tolerance settings.
- This table can be combined with
shiftsto provide additional attendance context. - For official worked hours, overtime, balances, and working time reports, use
daily_time_configs. - This dataset is primarily used for punctuality monitoring, attendance compliance reporting, and analyzing tolerance rule behaviour.
trainings
Contains information about training programs configured in Factorial. Each record represents a training course or learning activity created within the Training module, including general information, associated costs, provider details, classification, and tracking information.
This table allows organisations to analyse training investment, available courses, external providers, and the relationship between training programs and their sessions through sessions.
Entity
Training / Courses
Use cases
- Training reporting
- Learning & Development dashboards
- Training cost analysis
- Training investment analysis
- Employee development reporting
- External training monitoring
- Training catalog management
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Training identifier |
author_id |
Number (FK) | Employee/user who created the training |
Relationships
-
trainings.id→sessions.training_idPurpose: Retrieve sessions associated with a training program. Allows analysis of training schedules, dates, modalities, and participants. -
sessions.id→session_access_memberships.session_id*(through sessions)*Purpose: Retrieve employees associated with sessions belonging to the training program. -
trainings.author_id→employees.id*(when applicable)*Purpose: Retrieve the employee or user who created the training.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Training identifier |
name |
String | Training name |
cost |
Number | Base training cost |
subsidized_cost |
Number | Subsidised training cost |
total_cost |
Number | Total training cost |
indirect_cost |
Number | Additional indirect costs |
salary_cost |
Number | Salary cost associated with training time |
type |
String | Training type or category |
created_at |
Timestamp | Training creation date |
author_id |
Number | Training creator identifier |
external_provider |
String | External training provider |
external |
Boolean | Indicates whether the training is external |
status |
String | Current training status |
year |
Number | Training year |
code |
String | Training code |
tags |
Array / String | Training classification tags |
Features / Relevant data
-
name→ identifies the training program. -
type→ enables training categorisation. -
cost/total_cost→ support training investment analysis. -
subsidized_cost→ identifies subsidised amounts. -
indirect_cost→ captures additional training expenses. -
salary_cost→ represents employee salary costs related to training. -
external→ differentiates internal and external trainings. -
external_provider→ identifies third-party providers. -
status→ tracks training lifecycle. -
year→ enables yearly training reporting. -
tags→ supports training classification and filtering.
Notes
- Each record represents a training program or course configured in Factorial.
- A training can have multiple sessions through
sessions.training_id. - Employee participation should be retrieved through
sessionsandsession_access_memberships. - Cost-related fields allow analysis of training investment and financial impact.
-
subsidized_costis listed twice in the available exposers and should be validated against the source schema. -
externalandexternal_provideridentify trainings managed by external providers. - This table should be combined with
sessionsto obtain the complete training lifecycle, including scheduling and employee participation. - It is one of the primary datasets for Learning & Development analytics, training cost reporting, and training catalog management.
work_areas
Contains information about the work areas configured in Factorial. Each record represents a work area used to organise employees, workplaces, and operational structures within the company, including its name, archive status, and associated location.
This table allows organisations to classify operational areas, associate them with locations, and use them as an organisational dimension for workforce reporting and shift planning.
Work areas can also be used in Shift Management to define the operational area associated with planned employee shifts.
Entity
Work Areas
Use cases
- Employee organisation reporting
- Workplace structure analysis
- Location-based reporting
- Workforce segmentation
- Shift planning analysis
- Operational dashboards
- Workforce distribution analysis
- Organisational structure reporting
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Work area identifier |
location_id |
Number (FK) | Associated location identifier |
Relationships
-
work_areas.location_id→locations.id*(when available)*Purpose: Retrieve the location associated with the work area. -
work_areas.id→shift_management_shifts.work_area_id*(when Shift Management is enabled)*Purpose: Retrieve the work area assigned to a planned shift. This relationship allows analyzing scheduled shifts, workforce planning, and employee schedules by operational area. -
work_areas.id→ Employee/workplace related datasets *(when available)*Purpose: Associate employees or operational records with their configured work area.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Work area identifier |
name |
String | Work area name |
archived |
Boolean | Indicates whether the work area is archived |
location_id |
Number | Associated location identifier |
Features / Relevant data
-
name→ identifies the operational or organisational area. -
archived→ identifies inactive or historical work areas. -
location_id→ connects work areas with physical or organisational locations. -
shift_management_shifts.work_area_id→ identifies the operational area assigned to planned shifts. -
id→ enables linking work areas with workforce planning and workplace-related datasets.
Notes
- Each record represents a work area configured in Factorial.
- Work areas are used as an organisational dimension to classify employees, workplaces, and operational structures.
- Work areas can also be used within Shift Management to assign planned shifts to a specific operational area.
- When Shift Management is enabled, this table can be combined with
shift_management_shiftsthroughwork_area_idto analyse planned schedules, employee assignments, and workforce distribution by area. - Archived work areas may still exist for historical reporting purposes.
- This table does not store employee assignments directly; employee relationships should be retrieved through related datasets.
-
location_idcan be used to enrich work area reporting with location information. - It is commonly used for workforce segmentation, shift planning analysis, workplace structure reporting, and operational dashboards.
work_schedule_schedules
Contains information about the employee work schedules configured in Factorial. Each record represents a planned working schedule assigned to an employee, including scheduled dates, planned start and end times, expected duration, schedule type, and employee assignment.
This table is used to analyse planned working time, employee schedules, and workforce organization. It represents expected schedules rather than actual attendance records.
Entity
Work Schedule / Employee Schedules
Use cases
- Work schedule reporting
- Planned hours analysis
- Employee availability analysis
- Schedule compliance reporting
- Workforce planning
- Fixed vs flexible schedule analysis
- Capacity planning dashboards
- Working time planning analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Work schedule record identifier |
employee_id |
Number (FK) | Associated employee |
Relationships
-
work_schedule_schedules.employee_id→employees.idPurpose: Retrieve employee information associated with the planned schedule. -
work_schedule_schedules.date→shifts.date*(report correlation)*Purpose: Compare planned schedules with actual attendance records.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Work schedule record identifier |
date |
Date | Scheduled working date |
start_at |
Timestamp | Planned work start time |
end_at |
Timestamp | Planned work end time |
duration_in_hours |
Number | Planned schedule duration |
total_hours_per_day |
Number | Total planned hours for the day |
schedule_name |
String | Schedule name |
schedule_type |
String | Schedule type (fixed or flexible) |
employee_id |
Number | Associated employee |
Features / Relevant data
-
start_at/end_at→ define planned working periods. -
duration_in_hours→ represents scheduled duration. -
total_hours_per_day→ represents planned daily workload. -
schedule_type→ identifies schedule flexibility:-
fixed→ predefined working hours with expected start and end times. -
flexible→ flexible working arrangement without strict clock times.
-
-
schedule_name→ identifies the schedule assigned to the employee. -
date→ enables daily planning analysis.
Notes
- Each record represents a planned schedule assigned to an employee for a specific date.
- This table should be considered a planning dataset, not an attendance dataset.
-
schedule_typedifferentiates between fixed schedules and flexible schedules. - It can also be compared with
shiftsto analyze differences between expected and actual working time. - It is mainly used for workforce planning, schedule analysis, availability reporting, and working time organization.
workforces
Contains information about the daily workforce availability and capacity of employees in Factorial. Each record represents an employee workforce calculation for a specific date, including the employee's full-time equivalent (FTE) value and leave-related information affecting workforce availability.
This table allows organisations to analyse employee capacity, workforce availability, and the impact of absences or permissions on daily workforce metrics.
The dataset is focused on workforce availability calculations rather than employee master data or attendance records.
Entity
Workforce Availability
Use cases
- Workforce capacity reporting
- FTE availability analysis
- Workforce planning
- Leave impact analysis
- Daily workforce dashboards
- Employee availability tracking
- Capacity trend analysis
- Organisational planning
- Attendance vs capacity analysis
Keys
| Field | Type | Usage |
|---|---|---|
id |
Number (PK) | Workforce record identifier |
employee_id |
Number (FK) | Associated employee |
Relationships
-
workforces.employee_id→employees.idPurpose: Retrieve employee information associated with the workforce calculation. -
workforces.employee_id+workforces.date→shifts.employee_id+shifts.date*(report correlation)*Purpose: Compare workforce availability with actual attendance records for the same employee and date. Allows analyzing workforce capacity versus attendance activity. -
workforces.employee_id→leaves.employee_id*(report correlation)*Purpose: Relate workforce availability with employee leave records affecting capacity. -
workforces.date→leaves.start_on / leaves.finish_on*(report correlation)*Purpose: Identify leave events affecting workforce availability on a specific date.
Key fields
| Field | Exposer Type | Description |
|---|---|---|
id |
Number | Workforce record identifier |
full_time_equivalent |
Number | Employee workforce availability expressed as FTE value |
date |
Date | Workforce calculation date |
leaves |
String | Leave or permission affecting employee availability |
employee_id |
Number | Associated employee identifier |
Features / Relevant data
-
full_time_equivalent→ represents the employee's available workforce capacity for a specific date. -
date→ identifies the day for which workforce availability is calculated. -
leaves→ indicates leave or permission events affecting workforce availability.- Example values may include permissions such as
Retributed permission. - Empty values indicate no leave information associated with the workforce record.
- Example values may include permissions such as
-
employee_id→ connects workforce metrics with employee information. -
employee_id + date→ allows comparison between workforce availability and attendance activity fromshifts. - Historical records allow analysing workforce evolution and capacity changes over time.
Notes
- Each record represents an employee workforce availability calculation for a specific date.
-
full_time_equivalentrepresents the employee's available capacity for that day and can contain partial values depending on employee availability. - The
leavesfield represents leave-related information affecting workforce availability and may contain leave type descriptions rather than numeric values. - Multiple records may exist for the same employee and date depending on workforce events or leave scenarios.
- This table can be combined with
shiftsusingemployee_idanddateto compare workforce availability with actual attendance activity. - The relationship with
shiftsis intended for analytical comparison and should not be used as a replacement for official worked time calculations. - This table should not be used for attendance calculations, worked hours, overtime, or payroll reporting.
- For official working time calculations, balances, and overtime logic, use
daily_time_configs. - For actual clock-in and clock-out activity, use
shifts. - For employment conditions and contractual information, use
contracts. - It is mainly used for workforce planning, FTE reporting, employee availability analysis, and understanding the impact of absences on workforce capacity.