CMMC readiness, end to end
Theme
Phase 2 drill-down: 2b technology inventory

Technology inventory

How each system the client runs becomes one row, linked to a shared product catalog, with its scoping answers captured in the same sitting, and which later steps read that row.

413
products in the shared catalog, each tied to what it does
66
functions (MFA, SIEM, firewall...) that link products to requirements
11
fields in one interview view: the inventory and its scoping answers together
7 of 12
assets in a realistic machine shop found a catalog match

The data model

One inventory row per system, a link into the catalog, and five later steps reading it.

Blue fields are computed and overwritten on every scoping run. The catalog is reference data, identical in every client base; the inventory starts empty in each one.

1

Record: one row per system

Typed during the interview, with the scoping answers in the same pass.

  1. Name the instance only when it needs one. One firewall is just its product name. Two of the same product get names that tell them apart ("CUI-enclave FortiGate", "guest Wi-Fi FortiGate"). Every reader falls back to the product name when Instance Name is blank.
  2. Link the product in the catalog, and record what the client actually uses it for in their words.
  3. Record how this client runs it. Deployment Model (self-hosted, IaaS, PaaS, SaaS, hybrid) is this client's choice for this instance. The catalog separately lists every model the product offers.
  4. Ask the scoping questions now, per system, while the client is in the room. Coming back for them means a second meeting.

All eleven fields sit in one view, "Inventory: scoping inputs (interview)". The order across the interview is 2a people, 2b inventory, 2c flows, then the 2d computation: "one long conversation recorded in several places". Flows come after the inventory because a hop can only point at a system that exists.

The scoping answers, and what each informs

FieldAnswersInforms
CUI Handling IntentIntended / Capable but not intended / Not capableCUI Asset, Contractor Risk Managed, Out-of-Scope
Specialized Asset TypeThe device types (IoT, OT, test equipment and so on), or an explicit "Not Specialized"Specialized Asset
Separation Claim and Separation Enforced ByIs it separated from CUI systems, and which control proves itOut-of-Scope
Restricting PolicyThe policy statement that keeps CUI off itContractor Risk Managed
SSP-Named For RequirementsThe security requirements the SSP relies on it forSecurity Protection Asset and Security Role

Blank is safe: an unanswered row computes to Needs Review, never to Out-of-Scope. How the engine weighs these is on the data flow page.

2

Match: the catalog link

The link is what lets later steps reason about a product they've never seen before.

When the client's system isn't in the catalog

The link isn't required, and the steps that reason by function simply skip an unlinked row. That is safe for scoping, which falls to Needs Review, but it means the claim pre-fill and the evidence-request wording can't see that system.

What a realistic shop showed. Of 12 systems in a synthetic 42-person machine shop, 7 found a match. Two only matched a near miss (a Windows Server 2019 box linked to a 2012 row; a Veeam backup server linked to Veeam's Office 365 product). Five had nothing: the CNC controller, the CAM workstation, guest Wi-Fi, the multifunction printer, and QuickBooks. The catalog was built as a catalog of security tools, and an inventory is a catalog of assets.

The rules for the inventory import, when it's built

  1. Never silently drop a row. An unmatched system goes to a review queue, not a filter.
  2. Never silently guess a match. Record the match confidence; a low one goes to the same queue.
  3. Import the inventory fields only. The scoping answers stay blank, so every imported row computes to Needs Review until someone asks.
  4. Keep provenance visible. A client's list is what the client told us, on that date. Shadow IT, shop-floor equipment and MSP-managed systems are usually missing from it.
3

Feed: what reads each row

Five later steps, each reading a different part of the row.

StepReadsWhat it does with it
Data flows (2c)The row itselfEach hop's source and destination point at inventory rows
Scoping engine (2d)The scoping answers, the product's functions, the flowsWrites Scoping Category, Security Role and a Rationale sentence
Claim pre-fill (2e)Product → functions, compared with the functions each requirement's evidence needsProposes "Implemented", "Partial" or "Not Implemented" as the weakest kind of claim, for the client to confirm
Evidence requests (4)Product → functionsReplaces {{technology}} with the client's own tool names. If no tool provides the function, the placeholder stays and the request is flagged "No inventoried tool provides..."
SSP (7)Every row, its category, rationale and deployment modelThe system environment table, grouped by category; cloud services drawn inside the boundary

The pre-fill is a starting point, not a finding: in the synthetic run the client corrected 24 of 44 inferred claims. That is why it is ranked below anything the client says.

Decision log

The calls that shaped the inventory, and when they were made.

DecisionWhyWhen
Inventory rows link to a shared catalog; client data stays in the client baseThe same reference-versus-client split used everywhere else2026-07-19
One catalog row per vendor product, many functions eachA product spanning functions was duplicated once per function2026-07-19
Deployment options on the product, deployment model on the instanceWhat a product offers and what this client runs are different questions2026-07-19
Scoping answers live on the inventory rowFlows settle only two of the five categories; the rest need type, intent and SSP answers2026-07-20
Import rules: never drop, never guessStructured input looks authoritative even when it's a guess2026-07-20
Separation claim plus the control that proves itOut-of-Scope needs separation, and separation needs proof2026-07-22
Client edits arrive as proposals, never direct writesA status flag on the live row can't cover an edit or a delete2026-09-04
FedRAMP flags checked daily against Marketplace-confirmed claimsA vendor's claim is not an authorization2026-09-28

Known gaps