Skip to content

Feature: import and export controls via JSON files #128

@lan17

Description

@lan17

Summary

  • Add support for exporting controls to a JSON file and importing controls from a JSON file.
  • Export should support either all controls or a selected subset.
  • Import should load controls from JSON, validate them, and persist them in the database.

Motivation

  • Makes it easy to share reusable control bundles across users and environments.
  • Enables publishing JSON files for common policies / recommended control sets.
  • Provides a straightforward backup and migration path for control definitions.

Current behavior

  • Controls can be created, copied, edited, and stored in the database, but there is no import/export flow for sharing or reusing them as files.
  • The UI has a Control Store and per-control editing/copy flows, and the server has control CRUD plus validation endpoints, but nothing supports bulk JSON import/export.

Expected behavior

  • Users can click Export to download either all controls or a selected subset as a JSON file.
  • Users can click Import to upload a JSON file, validate its contents, and store the imported controls in the database.
  • The exported format is shareable so common policies/control bundles can be published and reused.

Reproduction (if bug)

  1. Open the control management / Control Store UI.
  2. Try to share, back up, or move a set of controls between environments.
  3. There is no import/export workflow today.

Proposed solution (optional)

  • Add an export action in the Control Store that serializes either all controls or a user-selected subset to a versioned JSON payload.
  • Add an import flow that parses uploaded JSON, validates each control using existing control-definition and evaluator validation, and persists valid controls.
  • Surface conflicts and invalid entries during import instead of failing silently.
  • Decide import conflict behavior explicitly (for example: skip existing names, overwrite, or import with rename).
  • Decide whether v1 should cover only control definitions or also policy associations.

Additional context

  • This feature lines up with the existing UI Control Store and control CRUD / validation APIs.
  • Open questions to resolve during implementation:
    • JSON schema/versioning for forward compatibility
    • Whether import/export should include policy membership or remain controls-only in v1
    • UX for duplicate names and partial import failures

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions