{
  "$schema": "https://datapackage.org/profiles/2.0/datapackage.json",
  "profile": "data-package",
  "name": "nizlo-rmm-operations-resources",
  "id": "https://izikipizi.github.io/nizlo-msp-operations-resources/datapackage.json",
  "title": "Nizlo RMM Operations Resources",
  "description": "Eight public, vendor-neutral CSV templates plus one source-dated public RMM pricing comparison dataset.",
  "homepage": "https://izikipizi.github.io/nizlo-msp-operations-resources/",
  "version": "1.21.0",
  "created": "2026-11-01",
  "contributors": [
    {
      "title": "Kip Ecklund",
      "role": "author"
    },
    {
      "title": "Nizlo",
      "path": "https://nizlo.com/",
      "role": "publisher"
    }
  ],
  "keywords": [
    "RMM",
    "managed service provider",
    "deployment readiness",
    "change management",
    "rollback plan",
    "endpoint management",
    "incident response",
    "RMM security",
    "RMM migration",
    "RMM evaluation scorecard",
    "endpoint inventory",
    "CMDB readiness",
    "RMM permissions matrix",
    "technician access review",
    "least privilege",
    "MSP client offboarding",
    "MSP exit checklist",
    "access revocation",
    "RMM agent removal",
    "RMM pricing",
    "RMM pricing dataset"
  ],
  "resources": [
    {
      "profile": "tabular-data-resource",
      "name": "rmm-deployment-readiness",
      "title": "RMM deployment-readiness checklist template",
      "description": "Thirty-three controls for preparation, pilot, wave rollout, verification, and closeout.",
      "path": "templates/rmm-deployment-readiness.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 3137,
      "hash": "sha256:e4084d765ae0ddf399e707f81aa2baa1f774be76f6accf5e9653a5ae52011e7d",
      "schema": {
        "fields": [
          { "name": "phase", "type": "string" },
          { "name": "control_id", "type": "string" },
          { "name": "control", "type": "string" },
          { "name": "owner", "type": "string" },
          { "name": "status", "type": "string" },
          { "name": "evidence", "type": "string" },
          { "name": "exception_owner", "type": "string" },
          { "name": "due_date", "type": "string" },
          { "name": "rollback_trigger", "type": "string" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "control_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "rmm-change-window-rollback-plan",
      "title": "RMM change-window and rollback-plan template",
      "description": "Twenty-six controls for approval, pilot, rollout, validation, rollback, communications, and closure.",
      "path": "templates/rmm-change-window-rollback-plan.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 6525,
      "hash": "sha256:2da759e66d4c4dfcbde5f531e1c246c699be28c6fed2a662007ccd6a7960e840",
      "schema": {
        "fields": [
          { "name": "phase", "type": "string" },
          { "name": "control_id", "type": "string" },
          { "name": "activity", "type": "string" },
          { "name": "owner", "type": "string" },
          { "name": "planned_start_utc", "type": "string" },
          { "name": "planned_end_utc", "type": "string" },
          { "name": "success_criteria", "type": "string" },
          { "name": "evidence", "type": "string" },
          { "name": "rollback_trigger", "type": "string" },
          { "name": "rollback_action", "type": "string" },
          { "name": "decision_owner", "type": "string" },
          { "name": "communication_audience", "type": "string" },
          { "name": "status", "type": "string" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "control_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "rmm-incident-response-runbook",
      "title": "RMM incident response runbook template",
      "description": "Thirty controls for readiness, detection, containment, investigation, recovery, communication, and post-incident improvement.",
      "path": "templates/rmm-incident-response-runbook.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 3197,
      "hash": "sha256:24fcd51c018802e2150c4c2491ee553251d05fc8d30ee74785bf3e72804c4f8a",
      "schema": {
        "fields": [
          { "name": "phase", "type": "string" },
          { "name": "control_id", "type": "string" },
          { "name": "activity", "type": "string" },
          { "name": "owner", "type": "string" },
          { "name": "priority", "type": "string" },
          { "name": "status", "type": "string" },
          { "name": "evidence", "type": "string" },
          { "name": "decision", "type": "string" },
          { "name": "communication_audience", "type": "string" },
          { "name": "next_review_utc", "type": "string" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "control_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "rmm-migration-workbook",
      "title": "RMM migration checklist workbook",
      "description": "Thirty controls for discovery, target mapping, pilot, coexistence, cutover, validation, source retirement, and closeout.",
      "path": "templates/rmm-migration-workbook.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 4861,
      "hash": "sha256:9402d4e6027ca0ba837dce4d4316833088d69e28314f20ebdd01803fd315ebe0",
      "schema": {
        "fields": [
          { "name": "phase", "type": "string" },
          { "name": "control_id", "type": "string" },
          { "name": "activity", "type": "string" },
          { "name": "owner", "type": "string" },
          { "name": "status", "type": "string" },
          { "name": "evidence", "type": "string" },
          { "name": "dependency", "type": "string" },
          { "name": "rollback_plan", "type": "string" },
          { "name": "decision_due_utc", "type": "string" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "control_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "rmm-evaluation-scorecard",
      "title": "RMM evaluation scorecard template",
      "description": "Ten evidence-based evaluation areas for comparing RMM products during a controlled pilot.",
      "path": "templates/rmm-evaluation-scorecard.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1351,
      "hash": "sha256:599de6b2383e7ea1abe78baebd86927d2a94d6e0567d16d5751c1d7fce597df7",
      "schema": {
        "fields": [
          { "name": "criterion_id", "type": "string" },
          { "name": "criterion", "type": "string" },
          { "name": "weight", "type": "integer" },
          { "name": "score_0", "type": "string" },
          { "name": "score_1", "type": "string" },
          { "name": "score_2", "type": "string" },
          { "name": "evidence_or_notes", "type": "string" },
          { "name": "risk_owner", "type": "string" },
          { "name": "retest_date", "type": "string" },
          { "name": "decision", "type": "string" }
        ],
        "primaryKey": "criterion_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "endpoint-inventory-cmdb-readiness",
      "title": "Endpoint inventory and CMDB readiness template",
      "description": "Twenty-three fields for durable endpoint identity, ownership, lifecycle, management state, source provenance, freshness, and exception handling.",
      "path": "templates/endpoint-inventory-cmdb-readiness.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 838,
      "hash": "sha256:047bfa232509dc47044057b9f2da3de753643ec985bd3555411c969bd3f10eaa",
      "schema": {
        "fields": [
          { "name": "record_id", "type": "string" },
          { "name": "device_name", "type": "string" },
          { "name": "serial_number", "type": "string" },
          { "name": "hardware_uuid", "type": "string" },
          { "name": "management_agent_id", "type": "string" },
          { "name": "directory_device_id", "type": "string" },
          { "name": "operating_system", "type": "string" },
          { "name": "os_version", "type": "string" },
          { "name": "hardware_model", "type": "string" },
          { "name": "primary_user", "type": "string" },
          { "name": "customer_or_department", "type": "string" },
          { "name": "site_or_location", "type": "string" },
          { "name": "business_service", "type": "string" },
          { "name": "support_group", "type": "string" },
          { "name": "lifecycle_state", "type": "string" },
          { "name": "management_state", "type": "string" },
          { "name": "last_check_in_utc", "type": "datetime" },
          { "name": "source_system", "type": "string" },
          { "name": "source_observed_at_utc", "type": "datetime" },
          { "name": "confidence_or_exception", "type": "string" },
          { "name": "exception_owner", "type": "string" },
          { "name": "next_review_at_utc", "type": "datetime" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "record_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "rmm-technician-access-review",
      "title": "RMM technician access review matrix",
      "description": "Twenty-nine fields for reviewing technician and role scope, privileged capabilities, justification, authentication, approval, review, exceptions, and remediation.",
      "path": "templates/rmm-technician-access-review.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1007,
      "hash": "sha256:b9c99ba241aba883f5397b83c9981b2e095bc9341e4e1b25a9a6f1034188dbfc",
      "schema": {
        "fields": [
          { "name": "assignment_id", "type": "string" },
          { "name": "technician_or_role", "type": "string" },
          { "name": "employment_status", "type": "string" },
          { "name": "customer_or_tenant_scope", "type": "string" },
          { "name": "site_or_device_scope", "type": "string" },
          { "name": "access_tier", "type": "string" },
          { "name": "business_justification", "type": "string" },
          { "name": "rmm_console_access", "type": "string" },
          { "name": "remote_control", "type": "string" },
          { "name": "background_tools", "type": "string" },
          { "name": "script_execution", "type": "string" },
          { "name": "automation_edit", "type": "string" },
          { "name": "patch_approval", "type": "string" },
          { "name": "alert_configuration", "type": "string" },
          { "name": "credential_or_vault_access", "type": "string" },
          { "name": "user_and_role_admin", "type": "string" },
          { "name": "api_or_integration_admin", "type": "string" },
          { "name": "billing_or_commercial_access", "type": "string" },
          { "name": "mfa_enforced", "type": "string" },
          { "name": "managed_admin_device_required", "type": "string" },
          { "name": "approval_owner", "type": "string" },
          { "name": "approved_at_utc", "type": "datetime" },
          { "name": "last_reviewed_at_utc", "type": "datetime" },
          { "name": "next_review_due_utc", "type": "datetime" },
          { "name": "temporary_expiration_utc", "type": "datetime" },
          { "name": "exception_or_ticket", "type": "string" },
          { "name": "remediation_owner", "type": "string" },
          { "name": "decision", "type": "string" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "assignment_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "msp-client-offboarding-evidence-register",
      "title": "MSP client offboarding checklist and evidence register",
      "description": "Thirty-two controls for authorization, inventory, secure transfer, access revocation, agent removal, data disposition, acceptance, and post-exit verification.",
      "path": "templates/msp-client-offboarding-evidence-register.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 4465,
      "hash": "sha256:9708ca312fbb35a0865cb8ad0af1f36e793635a365a52164a47c2e3268a022e1",
      "schema": {
        "fields": [
          { "name": "phase", "type": "string" },
          { "name": "control_id", "type": "string" },
          { "name": "control", "type": "string" },
          { "name": "owner", "type": "string" },
          { "name": "customer_owner", "type": "string" },
          { "name": "due_at_utc", "type": "datetime" },
          { "name": "status", "type": "string" },
          { "name": "evidence", "type": "string" },
          { "name": "access_or_asset", "type": "string" },
          { "name": "data_disposition", "type": "string" },
          { "name": "successor_or_recipient", "type": "string" },
          { "name": "acceptance_owner", "type": "string" },
          { "name": "exception_or_ticket", "type": "string" },
          { "name": "follow_up_at_utc", "type": "datetime" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "control_id"
      }
    },
    {
      "profile": "tabular-data-resource",
      "name": "public-rmm-pricing-comparison-2026-10-30",
      "title": "Public RMM pricing comparison for one-technician MSPs",
      "description": "Six source-dated public price models normalized to one technician and fleets of 10, 50, 100, and 500 endpoints. Nizlo maintains the dataset and is one of the compared products.",
      "path": "data/public-rmm-pricing-comparison-2026-10-30.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1639,
      "hash": "sha256:eec44fefd50f1ea794739bf08c8a9cee8478b6b64e09f532f7de197b93767624",
      "licenses": [
        {
          "name": "CC-BY-4.0",
          "path": "https://creativecommons.org/licenses/by/4.0/"
        }
      ],
      "schema": {
        "fields": [
          { "name": "product", "type": "string" },
          { "name": "pricing_model", "type": "string" },
          { "name": "billing_term_for_estimate", "type": "string" },
          { "name": "one_technician_endpoints_10_usd_month", "type": "number" },
          { "name": "one_technician_endpoints_50_usd_month", "type": "number" },
          { "name": "one_technician_endpoints_100_usd_month", "type": "number" },
          { "name": "one_technician_endpoints_500_usd_month", "type": "number" },
          { "name": "month_to_month_alternative_usd", "type": "number" },
          { "name": "source_url", "type": "string", "format": "uri" },
          { "name": "fact_checked", "type": "date" },
          { "name": "notes", "type": "string" }
        ],
        "primaryKey": "product"
      }
    }
  ]
}
