---
id: SCR-PFM-MTD-010
title: Custom objects
route: /console/{tenantId}/configuration/platform/customObjects
surface: console
product_area: platform
module: metadata
revision: 1
status: draft
design_intent: confirmed
origin: PLAT-M5 D2 (console first), D12 (v0 designs first) and D14 (each milestone carries its screens), Product
  Accepted 2026-10-20
implementation_evidence: observed
inference: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
purpose: "Administrators inspect the workspace\u2019s custom categories and control their lifecycle. The list also\
  \ leads to the category designer."
supports:
- JNY-PFM-MTD-001
- JNY-PFM-MTD-003
- CAP-PFM-MTD-009
- CAP-PFM-MTD-010
permission: platform.custom-objects.read to view; .create, .update and .delete to change
entry_from:
- Configuration home (Platform application)
exits_to:
- SCR-PFM-MTD-011
displays:
- field: Each object's icon, name, status, app and owner
  source: listCustomObjects; getAssociationType for the owner
- field: Search over name, key and description
  source: console filter
actions:
- label: New custom object
  operation_id: 'none: opens the designer'
  permission: platform.custom-objects.create
  confirm: false
- label: Activate
  operation_id: activateCustomObject
  permission: platform.custom-objects.update
  confirm: true
- label: Archive
  operation_id: archiveCustomObject
  permission: platform.custom-objects.delete
  confirm: true
- label: Restore
  operation_id: restoreCustomObject
  permission: platform.custom-objects.delete
  confirm: true
states:
- loading
- error
- empty
- read-only
- inactive (archived rows)
validation:
- BR-CAP-PFM-MTD-009-02
- BR-CAP-PFM-MTD-009-04
- BR-CAP-PFM-MTD-009-08
patterns:
- PageLayout (standard width)
- PageHeader
- ConfigBreadcrumb
- EmptyState
- LoadingIndicatorPanel
- configuration area resource list
- lifecycle badge
- confirmation dialogs for lifecycle actions
component: components/configuration/resources/custom-objects.tsx
evidence:
- 'react-console at baf6dae3: app/(console)/console/[tenantId]/configuration/[module]/[area]/[[...rest]]/page.tsx;
  components/configuration/resources/custom-objects.tsx; components/configuration/custom-objects/lifecycle-badge.tsx,
  lifecycle-dialogs.tsx; lib/custom-objects/config-adapters.ts'
controls: [TC-AI-001, TC-AI-002, TC-AI-003, TC-AI-004, TC-AI-006, TC-AI-007, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-DAT-001, TC-DAT-003, TC-DAT-004, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---

# Custom objects

## What the Screen Is For

Administrators inspect the workspace’s custom categories and control their lifecycle. The list also leads to the category designer.

## What It Shows and Lets People Do

Rows expose status, placement and owner. Confirmed actions activate drafts, archive live definitions or restore archived definitions; activation reports incomplete naming.

## States and Errors

Service failures and stale versions are displayed. Archived definitions remain listed as inactive, and read-only reach hides mutation controls.

## Patterns It Must Respect

The existing resource list uses lifecycle badges and confirmation dialogs within its configuration frame.
