ISM Pulse - A Quarterly Change Review Tool

Running self-test… i On every page load the tool replays a known fixture (2 New / 2 Modified / 1 Rescinded) through the real delta engine. Green means the parser still matches expectations; red means ASD has likely changed the CCM schema and the output should not be trusted until the parser is updated.
Built by Gaurav Vikash · Apache Licence 2.0 · Free & open-source

Upload a product's System Security Plan Annex (SSP-A) spreadsheet, the current-quarter ASD ISM Cloud Controls Matrix (CCM), and the ISM Changes PDF. The tool computes the delta between the CCM and SSP-A, and presents an interactive review dashboard with downloadable outputs.

All processing happens in the browser. Nothing is uploaded anywhere.

1. Product details

* Required. All three values must be provided to compute a delta.

2. Upload inputs

Comparison mode:
Not loaded
Not loaded
Not loaded

About this tool

How this tool works

The tool reads two spreadsheets, finds what actually changed between them, and fills in the parts of the review that can be determined mechanically — so the reviewer can focus on the judgement calls.

1. Inputs

  • SSP-A (latest available) — your baseline scoping
  • CCM (this quarter) — the new ASD truth
  • Changes PDF (this quarter) — for cross-validation and rescission rationale

2. Process

  • Detect quarters from sheet names
  • Diff IDs → New / Modified / Rescinded
  • Enrich each row with SSP-A scoping
  • Pre-fill In-scope + Triage (rules below)

3. Outputs

  • Dashboard — filter, search, edit inline
  • Change Register (.xlsx) — Summary, Controls, Principles, Methodology, E8 Snapshot
  • Updated SSP-A (.xlsx) — baseline with your triage applied
  • Stakeholder note + share summary
Assumptions the tool makes about the inputs

The delta and pre-fills rest on a few assumptions about how the SSP-A and the CCM are structured. If any are untrue for your product the output will still look plausible but won't be trustworthy — worth a glance before you upload.

Assumption What goes wrong if it’s untrue
The SSP-A lists every ISM control in force when it was last finalised, including rows marked Not Applicable. If Not-Applicable rows were deleted instead of marked NA, they reappear in the current CCM and get counted as New.
Control identifiers are stable across quarters unless ASD rescinds and re-issues. A rename surfaces as one Rescinded + one New item. Likely pairs are flagged as hints but not auto-linked.
Material updates to a control change its description text (not just its applicability labels). Applicability-only changes aren’t flagged as Modified. The applicability-drift HINT catches them separately.
The scope of the system and ISM Guidelines has not changed materially since the last SSP-A was finalsied. Pre-fills come straight from the baseline SSP-A. After an architectural change, pre-filled Not-Applicable decisions may be stale.
Essential Eight maturity lives in the CCM’s ML1 / ML2 / ML3 columns. If ASD restructures those columns the E8 snapshot populates as empty. The startup self-test catches gross drift.
Pre-fill rules (applied in order)
Priority Trigger condition In scope Triage Applies to
1 Every control under a Guideline is marked Not Applicable in the baseline SSP-A No No Action New and Modified
2 This specific row is marked Not Applicable in the baseline SSP-A No No Action (mod only) Modified and Rescinded
3 Row exists in baseline and is not flagged out-of-scope Yes blank — reviewer decides Modified and Rescinded
Brand-new control with no baseline entry and rule 1 doesn't apply blank blank New
Reminder: pre-fills exist only to save the reviewer keystrokes. They do not assess the actual change. The reviewer is responsible for reading each changed control and confirming or overriding every pre-fill before sharing the register.

Privacy

100% client-side — nothing leaves your browser

The SSP-A, CCM and PDF you upload are processed in-memory. All data and processing is lost when a tab is closed or reloaded. Export the Change Register, Updated SSP-A or Word summary before leaving to save your work.

Known limitations and edge cases
  • Column layout assumptions. The tool assumes the CCM and SSP-A use the column headers in use at the time of publication (Identifier, Revision, Updated, Guideline, Topic, Provider Responsibility, Implementation Status, etc.). If ASD restructures the CCM, you may need to tweak the code — spot-check a few rows the first time you use it against a new quarter's release.
  • Sheet name convention. Quarter detection reads the workbook's sheet name (e.g. "Controls - March 2026"). If your SSP-A renames that sheet, the baseline quarter label will be blank.
  • Rescission + re-issue. Occasionally ASD retires one ISM identifier and reintroduces the same requirement under a new identifier. The tool will flag the old ID as Rescinded and the new ID as New but will not connect them — the reviewer has to spot these pairs manually.
  • Pre-fill heuristics are typical-case. The guideline-level out-of-scope rule reflects how most SSP-As are structured, but unusual ones (multi-tenant, hybrid, federal-vs-state splits) may need the pre-fills overridden more often. Sanity-check at least one guideline you expect to be in scope before trusting the register.
  • Essential Eight flagging. The Essential 8 Maturity Level column is populated from the CCM's ML1/ML2/ML3 columns. Controls that do not map to Essential 8 are shown as "None".
  • Info and Pivot tabs are dropped. If your baseline SSP-A has an Info / Information tab or a Pivot tab, the Updated SSP-A export drops them. Info tabs do not round-trip cleanly through the xlsx library; Pivot tabs would show baseline-quarter counts against the new controls. Re-create the pivot against the Updated SSP-A in Excel (Insert → PivotTable). Other user sheets and hidden sheets still pass through untouched.
  • Freeze panes are not preserved. The underlying library (xlsx-js-style) does not write frozen rows. Apply it manually in Excel after download (View → Freeze Top Row).
  • Sensitivity labels (MIP / AIP) and DRM. Real-world SSP-As are often protected with Microsoft Purview / Azure Information Protection labels, Microsoft Information Protection encryption, or third-party DRM. The tool can only parse an unprotected .xlsx — if the file is labelled or encrypted, browser FileReader returns ciphertext and the parse will fail with a cryptic error. Before uploading, open your SSP-A in Excel, remove the sensitivity label (or downgrade it to an unprotected equivalent) and save a fresh copy, then feed that copy to the tool. Re-apply the label on your original after the review. Because processing is entirely client-side, the unlabelled copy never leaves your machine.
  • Password-protected or macro-enabled workbooks. Password-protected .xlsx, .xlsm and .xlsb files are not supported — remove the password or convert to a plain .xlsx before uploading.