Scott Holdings LLC
Design preview
GS
Templates Roofing CRM Pro

Roofing CRM Pro Yours

Key roofing-crm-pro-9f2c1a · Field Service · Published v2 · saved from Summit Roofing

Contents

Jobs pipelinejobs-pipeline
Job detailjob-detail
Crew schedulecrew-schedule
Estimatesestimates
Invoicesinvoices

Pack details

Owner
You — private to this account
Source product
Summit Roofing
Category
Field Service
Industry
Roofing
Status
Published
Version
v2
Members
14 pages · 3 menus
Theme
roofing-crm-pro-9f2c1a-theme
Top bar
roofing-crm-pro-9f2c1a-topbar
About this page

What’s inside one of your packs — every page, menu, and setting it will seed into a new product. Only your account can see this pack or start products from it; publishing marks it ready to use without making it visible to anyone else, and editing it later never changes products already built from it. Products remember which pack version they came from, which is what makes clean upgrades possible.

Behind this page/template-packs/:templatePackKey · CanManageTemplates

Retrieve

Pack header + members from the Template Library, gated by fn_TemplatePack_CanUse with the server-injected account. A non-owner requesting this key gets not-found — never a permission hint.

Save

Validate → sp_ValidateTemplatePack; publish → sp_PublishTemplatePack with @RequestingAccountId (a published:false result carries the validation report). “Use for new product” opens the create wizard with this pack preselected; provisioning passes @RequestingAccountId into sp_SeedAppFromTemplatePack.

Success

  • 56110 publish by a non-owner refused.
  • 50019 seed by a non-owner refused — fail-closed if the account id is omitted.
  • 50009 a draft cannot seed; the UI disables the action but the server rule is the enforcement.
  • Publish rolls all members to a pinned pack version.

CLI handoff

Implement this scaffold from the structured contract, then remove hard-coded preview rows. The source of truth is CLI Handoff and admin-cli-manifest.json.

Page IDtemplate-pack-detail
Route/template-packs/:templatePackKey
AccessCanManageTemplates
Statuscatalog-schema-ready-content-not-seeded

Server-inject identity and scope values; never trust browser-supplied account, app, tenant, user, entitlement, price, or permission identifiers. Preserve the loading, empty, forbidden, failed, retrying, and completed states shown by the preview.