Skip to content

INFRA-CAT reference ​

SWAO-INFRA-CAT is the infrastructure and application category catalogue that Service Portfolio Assessment uses to classify every intake row. A category tells SWAO what kind of system an application is (for example a PACS, a domain controller, or a VDI farm), which vendors and product names indicate it, how to look up its end of life and vulnerabilities, and which sovereign or open-source alternatives exist.

Classification feeds the SWAO_APM scoring (sovereignty and migration domains), vendor consolidation, the effort model of the migration wave generator, and the per-app HTML page.

Tier 1: built-in categories ​

The built-in catalogue ships with SWAO in controls/infra-catalogue/ (5 files, 25 categories). swao service init loads it automatically.

Each built-in file declares its own id, name and load_order at the top; there is no registry file. SWAO loads every *.yaml in the directory in ascending load_order (platform 10, infrastructure 20, workplace 30, security 40, healthcare 50); a later file wins when two files define the same category ID. A file with missing or invalid metadata is skipped with a warning. Tier 2 files below need none of this metadata.

GroupCategory IDNameSovereign alternatives named
InfrastructureINFRA_INFRASTRUCTURE_DIRECTORYDirectory Service / Domain ControllerSamba Active Directory, FreeIPA
InfrastructureINFRA_INFRASTRUCTURE_DHCP_DNSDHCP / DNSISC Kea
InfrastructureINFRA_INFRASTRUCTURE_FILEFile Server / NASNextcloud, Samba
InfrastructureINFRA_INFRASTRUCTURE_BACKUPBackup and RecoveryBareos
InfrastructureINFRA_INFRASTRUCTURE_MAILMail ServerOpen-Xchange
InfrastructureINFRA_INFRASTRUCTURE_PKICertificate Authority / PKIEJBCA Community
HealthcareINFRA_MEDIZIN_KISClinical Information System (KIS / EPR)GNU Health, openEHR-based systems
HealthcareINFRA_MEDIZIN_PACSPicture Archiving and Communication SystemOrthanc
HealthcareINFRA_MEDIZIN_LISLaboratory Information SystemSENAITE LIMS
HealthcareINFRA_MEDIZIN_PDMSPatient Data Management System (ICU)none catalogued
HealthcareINFRA_MEDIZIN_DOSERadiation Dose Managementnone catalogued
HealthcareINFRA_MEDIZIN_TELEMATIKTelematics Infrastructure (TI)none catalogued
PlatformINFRA_PLATFORM_OS_WINDOWS_SERVERWindows ServerDebian GNU/Linux, Ubuntu Server (LTS), openSUSE Leap
PlatformINFRA_PLATFORM_OS_LINUX_DEBIANDebian GNU/Linuxnone catalogued (open source)
PlatformINFRA_PLATFORM_OS_LINUX_UBUNTUUbuntu Linuxnone catalogued (open source)
PlatformINFRA_PLATFORM_OS_LINUX_SUSESUSE Linux Enterprise Servernone catalogued
PlatformINFRA_PLATFORM_OS_LINUX_RHELRed Hat Enterprise Linux familynone catalogued
PlatformINFRA_PLATFORM_OS_SOLARISOracle Solarisnone catalogued
PlatformINFRA_PLATFORM_DATABASEStandalone Database ServerPostgreSQL, MariaDB
SecurityINFRA_SECURITY_ENDPOINTEndpoint Protection / EDRnone catalogued
SecurityINFRA_SECURITY_NACNetwork Access ControlPacketFence
SecurityINFRA_SECURITY_SIEMSIEM / Log ManagementWazuh
WorkplaceINFRA_WORKPLACE_VDIVDI / Virtual Desktop Infrastructure (cluster-capable)OpenStack + Apache Guacamole
WorkplaceINFRA_WORKPLACE_PRINTPrint ServicesCUPS
WorkplaceINFRA_WORKPLACE_THIN_CLIENTThin Client Managementnone catalogued

Rows that match nothing are classified UNKNOWN and raise a SCAFFOLD.CATEGORY_UNKNOWN signal. The scaffold summary lists them; set infra_category in apps/<id>/.swao.yml by hand or add a Tier 2 category.

How a row is classified ​

SWAO tries three strategies in a fixed priority order. Within a strategy, the first category in load order wins.

  1. id_prefix_hints: the leading letters of the app ID (for example hospacs from HOSPACS004) match a hint.
  2. vendor_patterns: the vendor cell contains one of the patterns (case-insensitive substring match).
  3. product_name_patterns: a regular expression matches the app name (case-insensitive).

Independently, os_string_patterns on platform categories set the app's os_class from the operating system cell, and site prefixes set site.

Clusters ​

Categories with cluster_hint: true (built-in: VDI) let the scaffold consolidate identical rows. When at least cluster_threshold rows (default 3) share the same ID prefix and category, they become one cluster app (for example hoscix-cluster for HOSCIX001 to HOSCIX005) that lists its cluster_members. A 30-worker VDI farm is then assessed once, not thirty times.

Tier 2: engagement-specific categories ​

Add or override categories for one engagement by placing YAML files in wsp/inputs/catalogs/infra-cat/ in the workspace. Tier 2 is optional.

  • A Tier 2 category with a new ID is added after the built-in ones.
  • A Tier 2 category with the same ID as a built-in one replaces it for this workspace.
  • Files are loaded in alphabetical order; when the same ID appears in two Tier 2 files the last one wins, and swao health-check probe 21 warns about it.
yaml
# wsp/inputs/catalogs/infra-cat/engagement.yaml
id: INFRA_ENGAGEMENT
name: "Engagement-specific categories"
services:
  - id: INFRA_CUSTOM_LAB_ANALYSER
    name: "Laboratory analyser middleware"
    sovereign_rating: proprietary
    id_prefix_hints: [labmw]
    vendor_patterns: ["Example Lab Systems"]
    product_name_patterns: ["\\bAnalyser\\b", "\\bLabor\\b"]
    eol_product_ids: [windows-server]
    sovereign_alternatives:
      - { id: senaite, name: "SENAITE LIMS", sovereign_rating: open-source }
sites:
  - { prefix: anx, site: "Annex building" }

Category keys ​

KeyMeaning
idINFRA_ followed by upper-case letters, digits, underscores
name, shortDisplay name and short label
sovereign_ratingopen-source, open-standard, or proprietary
id_prefix_hintsApp ID prefixes that indicate the category
vendor_patternsVendor name substrings (case-insensitive)
vendor_canonical_nameNormalised vendor name for consolidation grouping
product_name_patternsRegular expressions on the app name; must compile (probe 21 checks)
os_string_patternsSubstrings of the OS cell that set os_class
cluster_hint, cluster_byAllow cluster consolidation (cluster_by: id_prefix)
eol_product_idsendoflife.date product IDs to query for this category
osv_package{ name, ecosystem } for OSV.dev lookups of open-source products
data_health_implied, regulatoryDefaults for health data and regulatory obligations
sovereign_alternativesList of { id, name, sovereign_rating }

Tier 2 files are included, after PII redaction, in swao support-bundle.