Skip to content

Attribute Definitions

Backlog fieldValue
Story IDINV-DASH-002
EpicInventory
Story typeDashboard
Review statusDraft - business analyst and business owner review required
Source evidenceInventory MFE route/form, Inventory.Apis controller, application command/query handlers, validators, domain entities, and posting services
Last source review2026-07-10

Purpose

Define reusable item characteristics and allowed values used to form item variants.

User stories

  • As a catalog administrator, I want to create attributes and allowed values so that variants are described consistently.
  • As a catalog user, I want to assign attribute groups to items so that valid variant combinations can be generated.
  • As an auditor, I want to view and export attribute definitions and values.

Acceptance criteria

  1. An attribute definition has a unique required identity and at least the values required by its configuration.
  2. Values can be added, edited, viewed, activated/deactivated, and removed subject to permission and dependency rules.
  3. Generated item variants do not contain duplicate attribute combinations.
  4. Attributes or values already used by item variants cannot be destructively removed from history.
  5. List, view, add, edit, delete, activate, and export actions are permission-controlled.

Required and optional data

  • Attribute group English and Arabic names are required, unique, and limited to 50 characters.
  • Attribute values require their localized identity and owning group.
  • Value lists are required only when an attribute group is used to generate controlled variants.
  • Active state controls future selection; it must not remove values from existing variant descriptions.

Variant effect

Assigning groups/values to an item generates or enables unique attribute combinations. The same combination cannot create two variants. Removing a group/value is blocked when it would invalidate referenced variants, stock, barcodes, prices, or transactions.

Frontend page coverage

The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.

Route/pageComponentModeRoute permission/guardMapping confidenceSource
(module default)LayoutPageComponentList/navigationGuards: AuthGuard, moduleLicenseGuardFeature token matchapps/inventory/src/app/remote-entry/entry.routes.ts:6
attribute-definitionAttributeDefinitionComponentList/navigationPermission: AppInventoryPermissions.ItemAttributesGroup_List,; Guards: PolicyAuthGuardFeature token matchapps/inventory/src/app/remote-entry/items/items.module.ts:377
masterdataLazy-loaded routeList/navigationNo route-level permission/guard found in source windowFeature token matchapps/inventory/src/app/remote-entry/entry.routes.ts:22

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
--No reactive formControlName controls were found for the routed components; review template-driven/shared child components.Route sources above

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
--No direct (click) handler was found; review shared toolbar/table commands and form submission bindings.Route sources above

Page-specific frontend acceptance criteria

  1. (module default) - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Guards: AuthGuard, moduleLicenseGuard
  2. attribute-definition - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Permission: AppInventoryPermissions.ItemAttributesGroup_List,; Guards: PolicyAuthGuard
  3. masterdata - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window

Internal Documentation — Microtec