--- name: sdaf-bom-selection description: > Pick the right SDAF BOM for a target SAP product / release / DB platform / version / kernel / topology. Explains where BOMs live in the samples repo (`SAP/` for whole products, `BOM/` for components), decodes the `ms`, `v####`, and `latest` suffix conventions, points at the compatibility guardrails (`supportedPlatforms`, `supportedDBVersions`, `supportedKernels`), and reminds the operator that the download flow needs four explicit BOM keys in `sap-parameters.yaml`. Use when a user says "which BOM do I use", "product BOM vs component BOM", "SAP samples BOM catalog", "BOM_CATALOG", "S4/2023 BOM", "HANA BOM", or "how do I pick a BOM for HANA/Oracle/DB2/ASE". Do NOT use to author a new BOM, to acquire media (`sdaf-media-acquisition`), or to troubleshoot a checksum / 404 (`sdaf-media-diagnostics`). allowed-tools: shell license: MIT --- # SDAF BOM Selection Context-primer. Helps a user *choose* an existing BOM from the samples catalog. Grounded in `docs/local/06-00-software-and-installation.md § Inputs and BOM ownership` and the samples-repo BOM docs (`sap-automation-samples/docs/02-00-bom-samples.md`). For an ordered 5-step end-to-end walkthrough (identify target → product vs component BOM → compatibility fields → prefer pinned name → pin samples commit), see [`references/bom-selection.md`](references/bom-selection.md); this body carries the topic-by-topic facts. ## When to invoke Trigger on: "pick a BOM", "which BOM", "product BOM vs component BOM", "BOM_CATALOG", "SAP samples", "S4 2023 BOM", "HANA BOM", "Oracle BOM", "DB2 BOM", "compatibility guardrails". Do NOT trigger on: authoring a new BOM, running `download_menu.sh`, media 404 / checksum troubleshooting, or install-time BOM failures. ## Where BOMs live Docs (`sap-automation-samples/docs/02-00-bom-samples.md § Understand SAP and BOM`; `docs/local/06-00-software-and-installation.md § Inputs and BOM ownership`): - **`sap-automation-samples/SAP//.yaml`** — **product BOM** (whole product); pick this when the documented flow accepts a single complete definition. - **`sap-automation-samples/BOM//.yaml`** — **component BOM** (app / db / kernel); pick these when the flow supports dynamic assembly driven by the four `sap-parameters.yaml` keys documented below. Anchor: `sap-automation-samples/docs/02-00-bom-samples.md § Understand SAP and BOM`. - **`sap-automation-samples/SAP/archives/`** — legacy only; do not use without explicit release guidance. Filename rule (docs; samples): the directory name and the YAML basename must match exactly, case-sensitive. A rename that breaks the pair breaks selection. ## BOM_CATALOG must point at the samples root `docs/local/06-00-software-and-installation.md § Inputs and BOM ownership`: - Set `BOM_CATALOG` to the root of a reviewed samples checkout that contains both `SAP/` and `BOM/`. - **Do not** set `BOM_CATALOG` to an individual BOM directory. - `download_menu.sh` passes this value to Ansible as `BOM_directory`. ## The four BOM keys (download flow) `docs/local/06-00-software-and-installation.md § Inputs and BOM ownership` is explicit: the SAP-system-generated `sap-parameters.yaml` contains `bom_base_name`, but the wrapper **overrides it** and requires four keys: ```yaml application_bom_name: database_bom_name: sap_kernel_bom_name: save_bom_as: bom_base_name: ``` Without the four downloader keys, the wrapper substitutes an empty value and the download fails. Also require `bom_base_name` to equal `save_bom_as`; installation reloads `bom_base_name` and must find the combined BOM written by the downloader. Surface both constraints whenever the operator picks component BOMs. ## Compatibility guardrails BOM YAML fields to check before picking (documented in `sap-automation-samples/docs/02-00-bom-samples.md § Select and run a BOM` / `§ Review before execution`; the same fields are present in every shipped BOM at `sap-automation-samples/{SAP,BOM}//.yaml` — open the current candidate rather than a versioned example): - `supportedPlatforms` - `supportedDBVersions` - `supportedKernels` - `product_ids` (role-to-SAP-product-ID map) - `materials.dependencies` (prerequisite BOMs) For the current allowed values on any of these keys, read the target BOM YAML itself and the samples-repo doc anchor above — those own the strings. Do not select a BOM whose guardrails do not match the target topology. ## Suffix decoding `sap-automation-samples/SAP/readme.md § BOM Name / BOM File` and `§ 02-00-bom-samples.md § Select and run a BOM`: - `ms` suffix — Microsoft-supplied BOM. - `v####` suffix — serial version number. - `latest` in a name — moving target; the docs warn that names containing `latest` can change later. Prefer a pinned `v####` name, and pin the samples-repo checkout commit, so a BOM selected today matches the media downloaded tomorrow (`sap-automation-samples/docs/02-00-bom-samples.md § Select and run a BOM`). ## Hand-off - To validate a BOM: `check_bom.sh` (runs `yamllint`, `ansible-lint`, and `check_bom.yml`). Referenced in `sap-automation-samples/docs/02-00-bom-samples.md § Validate`. BOM authoring is outside the shipped 18-skill hub. - To acquire media once a BOM is selected: route to `sdaf-media-acquisition`. - To diagnose archive / checksum / extractor failures after selection: route to `sdaf-media-diagnostics`. - To route BOM failures during a run: `docs/local/troubleshooting.md § BOM files are not found` → confirm `BOM_CATALOG` root, names, and files. ## Hard rules - Documented behaviour only (D19). If asked about air-gapped / offline media, an undocumented compatibility mapping, or the meaning of `XBOM`, say docs are silent and stop. - Do not add credentials or downloaded media to the samples repo (`sap-automation-samples/docs/02-00-bom-samples.md § Before you begin`). - Do not point `BOM_CATALOG` at a single BOM directory. ## See also - `sdaf-sap-system` (its generated `sap-parameters.yaml` is where the four BOM keys are set). - `sdaf-workspace-and-tfvars` (where the samples checkout is separate from the SDAF checkout). - `sap-automation-samples/docs/02-00-bom-samples.md`, `docs/local/06-00-software-and-installation.md`.