Skip to content

CaseModel

Jani Giannoudis edited this page Jan 21, 2026 · 1 revision

Case Model

The Payroll Engine categorizes cases into one of four categories.

  1. Employees
  2. Companies
  3. National
  4. Global

Each area has its own API endpoints and database tables. The procedure for determining company and employee cases is outlined below.

Company Cases

The cases assigned to a company must be identified.

  • Legally required company data
  • Data shared across employees
  • Data related to business partners (insurance conditions, etc.)
  • Subdivide use cases, e.g., by
    • Actor
    • Business partners
    • Company regulations
  • Per case
    • Determine case fields with data type and time type
    • Determine rules for availability and validation

The following example shows two business cases:

"regulations": [
  {
    "name": "RegulationName",
    "updateMode": "NoUpdate",
    "cases": [
      {
        "name": "Company",
        "caseType": "Company",
        "fields": [
          {
            "name": "CompanyId",
            "valueType": "String",
            "timeType": "Calendar"
          }
        ]
      },
      {
        "name": "CompanyInsurance",
        "caseType": "Company",
        "fields": [
          {
            "name": "CompanyInsurancePlan",
            "valueType": "Integer",
            "timeType": "Calendar"
          }
        ]
      }
    ]
  }
]

Case availability and validation is performed using Actions.

Employee Cases

The employee's cases during his time of employment should be identified.

  • Legally required employee data
  • Wage-related cases
  • Subdivide use cases, e.g., by
    • Partner
    • Children
    • Pension plan
    • Benefits
  • Per case
    • Determine case fields with data type and time type
    • Determine rules for availability and validation

The following example shows the cases for the employee and his partner:

"regulations": [
  {
    "name": "RegulationName",
    "updateMode": "NoUpdate",
    "cases": [
      {
        "name": "Employee",
        "caseType": "Employee",
        "fields": [
          {
            "name": "EmployeeIdentifier",
            "valueType": "String",
            "timeType": "Calendar"
          },
          {
            "name": "EmployeeFirstName",
            "valueType": "String",
            "timeType": "Calendar"
          },
          {
            "name": "EmployeeLastName",
            "valueType": "String",
            "timeType": "Calendar"
          },
          {
            "name": "EmployeeSalary",
            "valueType": "Money",
            "timeType": "Calendar"
          }
        ]
      },
      {
        "name": "EmployeeAddress",
        "caseType": "Employee",
        "fields": [
          {
            "name": "EmployeeAddressCity",
            "valueType": "String",
            "timeType": "Calendar"
          }
        ]
      },
      {
        "name": "EmployeePartner",
        "caseType": "Employee",
        "fields": [
          {
            "name": "EmployeePartnerFirstName",
            "valueType": "String",
            "timeType": "Calendar"
          },
          {
            "name": "EmployeePartnerLastName",
            "valueType": "String",
            "timeType": "Calendar"
          }
        ]
      },
      {
        "name": "EmployeePartnerAddress",
        "caseType": "Employee",
        "fields": [
          {
            "name": "EmployeePartnerAddressCity",
            "valueType": "String",
            "timeType": "Calendar"
          }
        ]
      }
    ]
  }
]

Next steps

Clone this wiki locally