FinOps: Save a Workbook as a Template and Reuse It Org-Wide
A finance pack that is rebuilt from memory every month is a pack that drifts. ZopNight’s cost workbook can now be saved as a template, so the same sheets, columns and filters are available to everyone in the organization.
Use Save as template on the workbook page, or Open a saved template from its menu. Export → Advanced report offers your saved templates or Start fresh. Admins and Editors can save templates, and Viewers can open them.
A shared pack is a reusable report setup that lives as a governed object in the organization, not as a file on one person’s laptop. The sections below show what governs it and what the change removed.
A Template Is a Report Policy, Not a New Kind of Object
Templates are stored as report policies for the organization, with the template as the policy’s spec and no schedule. No new table was added, so a template inherits the rules every policy already follows.
| Rule | Response |
|---|---|
| Any read or write without org-wide report:view | 403, checked before the spec is read |
| More than 100 templates in an organization | 409 |
| A spec with no sheets | 422 |
| A spec that includes a schedule | 422 |
| Listing policies without naming a domain | Report rows are hidden from callers without access |
The last row matters because a generic policies list could otherwise show report templates to someone who may not see reports. Hiding the rows closes that route.
This works while the access check runs first. A 403 is returned on any doubt, before the template’s contents are examined, so a caller without access learns nothing about what a template holds.
Validation Reads No Billing Rows
The workbook page shows each sheet’s columns over an empty grid and checks your setup as you edit it. It replaces the sample-row preview that the page used to offer.
The validation endpoint returns whether the setup is valid, plus a list of errors, and it reads no billing rows. A check that touches no billing rows can run on every edit without cost or delay, which a sample-row preview that queried real data could not.
Two Editors Get a Conflict Prompt, Not an Overwrite
Saving uses create for a new template and PATCH for an existing one, carrying the time it was last updated. If someone else saved in the meantime, the page shows a conflict prompt instead of replacing their work.
Without that, the later of two editors would silently overwrite the earlier. With it, the second person sees that the template changed and decides what to do.
What the Change Removes
The sample-row preview route is gone, along with the preview_cost_workbook MCP tool and the sample rows field on workbook requests. They were removed without a deprecation window, so an assistant that called the preview tool should use export_cost_workbook instead.
There is no migration and no new permission. A template is checked against the same org-wide report access that already governed workbooks.
